oracle timeatamp,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所支持的标准数据类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值