tnblog
首页
视频
资源
登录

Oracle 存储过程与函数

4321人阅读 2019/12/27 15:37 总访问:38511 评论:0 收藏:0 手机
分类: Oracle

存储过程

在应用程序中经常需要执行特定的一些操作,基于这些操作建立一个特定的过程。

建立过程语法:

SQL>CREATE  [OR REPLACE] -- REPLACE表示更新

PROCEDURE  PROCEDURE_NAME --PROCEDURE指定过程名称

(argument1 [model1] datatype1,argument2 [model2] datatype2,......) -- argument等指定过程的参数,当指定参数数据类型时,不能指定长度。

IS [AS] -- IS或者AS用于开始一个PL/SQL块

PL/SQL BLOCK; ----model是参数模式,包括输入参数(IN)、输出参数(OUT)、输入输出参数(IN OUT),默认为输入参数(IN)。

例子:

-- 建立一个不带参数的过程

SQL>CREATE OR REPLACE PROCEDURE TIME_OUT

         IS

         BEGIN

                  DBMS_OUTPUT.PUT_LINE(SYSTIMETAMP);

        END;


-- 建立一个带入输入参数的添加员工的存储过程


SQL>CREATE OR REPLACE PROCEDURE TIME_OUT

(eno VARCHAR2, name VARCHAR2,deptno VARCHAR2,sex VARCHAR2 default '男',

         edate DATE,wdate DATE,natno VARCHAR2 ,pho VARCHAR2 ,esal NUMBER,ecomm NUMBER)

         IS

         BEGIN

                  INSERT INTO scott.emp VALUES(eno ,name,deptno,sex,edate,wdate,natno,pno,esal)

        END TIME_OUT; -- 该过程没有指定参数模式,默认全是输入参数。

-- 调用过程

EXECUTE TIME_OUT [OR TIME_OUT(参数)];


存储过程不仅仅可以执行特定操作,也可以输出数据,输出数据使用OUT或者IN OUT 参数来完成。

OUT为输出参数,调用结束后Oracle会通过该变量将过程产生的结果传递给应用程序。

IN OUT为输入输出参数,在调用过程之前需要通过变量给该参数传递数据,在调用结束后,Oracle会通过该变量将过程产生的结果传递给应用程序

再举个例子:

-- 创建一个带OUT参数的过程

SQL>CREATE OR REPLACE PROCEDURE TestOut

(value1 NUMBER,value2 OUT NUMBER)

IS

   BEGIN

             value2 := value1+50;

  END;


-- 调用存储过程

SQL>DECLARE

         RESULT NUMBER;

BEGIN

         TestOut(10,RESULT );

         DBMS_OUT_PUT.PUT_LINE(RESULT );

END;

-- 输出结果

60


-- 删除存储过程

drop procedure 过程名称;



函数

在应用程序中经常需要通过执行SQL语句来返回特定数据,可以建立相应的函数。

建立函数语法:

SQL>CREATE  [OR REPLACE] -- REPLACE表示更新

FUNCTION  FUNCTION_NAME --PROCEDURE指定函数名称

(argument1 [model1] datatype1,argument2 [model2] datatype2,......) -- argument等指定函数的参数,当指定参数数据类型时,不能指定长度。

RETURN datatype  -- 用于指定函数返回值的数据类型

IS [AS] -- IS或者AS用于开始一个PL/SQL块

PL/SQL BLOCK; ----model是参数模式,包括输入参数(IN)、输出参数(OUT)、输入输出参数(IN OUT),默认为输入参数(IN)。

例子:

-- 创建函数

SQL>CREATE OR REPLACE FUNCTION Get_User

                       RETURN VARCHAR2

                       IS

                       V_User VARCHAR2(100);

                       BEGIN

                                SELECT ename INTO V_User FROM scott.emp WHERE EMPNO='7369';

                                RETURN V_User;

                       END;

-- 调用函数

一、使用变量接收函数返回值

SQL>DECLARE

                       username VARCHAR2(50);

          BEGIN

                       username := Get_User;

                       DBMS_OUTPUT.PUT_LINE(username);

          END;

二、在SQL语句中直接调用函数。

SQL>SELECT Get_User FROM DUAL;


三、在包中,如DBMS_OUTPUT调用函数

DBMS_OUTPUT.PUT_LINE('用户名: '|| Get_User);

-- 删除函数

DROP FUNCTION 函数名称;


注意:由于函数是必须要返回数据,所以只能作为表达式的一部分调用,可以在SQL中调用函数,

但并不是所有的·函数都可以在SQL语句中调用,带OUT和IN OUT 参数的函数不能在SQL中被调用,

而且必须只能使用SQL所支持的标准数据类。



评价

Oracle数据库中没有scott用户

使用SYS用户登录conn sys/密码 as sysdba(默认密码123456)然后找到oracle安装目录下scott.sql的这个文件然后执行命令:@+...

Oracle自定义函数的简单使用

一.最最最简单的返回一个数字的函数createorreplacefunctionfun_show returnint--申明返回值 as begin return1; end;...

Oracle存储过程

一个简单的带输入输出参数的存储过程(求两数之和)createorreplaceprocedureproc_sum(p1int,p2int,presultoutint) as be...

Oracle事务的简单使用

事务:  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。使用事务的原因:保证数据的安全有效。事务的四个特...

Oracle编程基础

简单介绍一下oracle中if,else,case when,循环,异常处理等用法if,elsedeclareptypeint:=2; begin ifptype=1then dbms_out...

Oracle使用游标

其实游标就是把查询的结果放入游标中,然后在去游标里边读取。相当于使用游标做了一个中转,而游标是可以作为参数进行传递...

Oracle程序包

当项目越来越大的时候,数据库中的函数,存储过程等越来越多。为了方便管理,Oracle建议使用程序包的管理机制。实现业务模...

Oracle中MERGE INTO,for,start with,decode用法

1. MERGEINTO:MERGEINTOT_TD_BU_MODIFY_NOTICE_LSA USING( selectMODIFY_NOTICE_ID,REJECT_REASONfromT_TD_BU_MODIFY_NOT...

Oracle+命令

oracle常用命令SQLPLUS进入oracle撤销命令revoke 权限 form 用户名show user查询当前登录账户锁定账户命令Alter user 用户...

Oracle 11g数据库的安装+空间管理

如果你在圣诞节没有收到礼物,请不要伤心也不要难过,因为接下来还有元旦,春节,还有情人节,还有元宵节......慢慢的你就...

Oracle--常用命令、条件语句、循环语句、SQL函数

Oracle常用命令1、登录数据库默认账户 默认密码 拥有权限sys 123456 as sysdba 拥有数据库的最高权限system ...

Oracle数据库的基本操作

Oracle数据库Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域...

Oracle数据库的认识和基本使用

推荐一个Oracle数据库的一个学习网站:http://www.oraclejsq.com/article/010100110.html一、对Oracle数据库的认识1、数据...

Oracle操作

Oracle数据库操作1、创建数据库create database databasename2、删除数据库drop database dbname3、备份数据库完全备份exp ...

Oracle 安装和常用的命令

Oracle 安装如下:https://jingyan.baidu.com/article/f79b7cb32095f79144023eae.html默认账户Sys 123456 as sysdba 数据...

Oracle数据库的同义词与视图

同义词概念:同义词顾名思义,是数据库方案对象的一个别名。这里的数据库方案对象指表、视图、序列、存储过程、包等。创建...
一电照耀十四洲,电来!
排名
53
文章
11
粉丝
5
评论
9
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术