您的位置:首页 > 数据库 > Oracle

oracle数据库

2015-08-24 11:15 567 查看

1,语法结构:PL/SQL块的语法:

[DECLARE

--declaration statements]

BEGIN

--executable statements

[EXCEPTION

--exception statements]

END;

2,http://blog.163.com/zhangjp_1985/blog/static/76924336201252710618133/

子程序是命名的PL/SQL块,可带参数并可在需要时随时调用。

PL/SQL有两种类型的子程序,即过程和函数。

过程用于执行特定的任务,函数用于执行任务并返回值。

语法及示例:

1、存储过程

创建存储过程的语法:

CREATE [OR REPLACE] PROCEDURE procedure_name

[(parameter_list)]

{IS|AS}

[local_declarations]

BEGIN

executable_statements

[EXCEPTION

exception_handlers]

END [procedure_name];

其中:procedure_name是过程的名称。

parameter_list是参数列表。

local_declarations是局部声明。

executable_statements是可执行语句。

exception_handlers是异常处理程序。

示例1:演示创建过程(参数列表中为IN参数赋予一个默认值,不能为OUT、IN OUT参数赋予默认值)

create or replace procedure find_emp(emp_no in number:=7900)

as

empname varchar2(20);

begin

select ename into empname from emp where empno=emp_no;

dbms_output.put_line('雇员姓名是 '||empname);

exception

when no_data_found then

dbms_output.put_line('雇员编号未找到');

end find_emp;

调用过程:EXECUTE procudure_name(parameters_list);

也可以在过程里面调用,直接写上procudure_name而不必写EXECUTE。

示例2:演示创建带OUT参数的过程

create or replace procedure test(value1 varchar2,value2 out number)

is

identity number;

begin

select sal into identity from emp where empno=value1;

if identity<2000 then

value2:=1000;

else

value2:=500;

end if;

end;

调用带OUT参数的过程:

declare

value2 number;

begin

test('7900',value2);

dbms_output.put_line(value2);

end;

示例3:演示创建带IN OUT参数的过程

create or replace procedure swap(p1 in out number,p2 in out number)

is

v_temp number;

begin

v_temp:=p1;

p1:=p2;

p2:=v_temp;

end;

调用带IN OUT参数的过程:

declare

num1 number:=100;

num2 number:=200;

begin

swap(num1,num2);

dbms_output.put_line('num1= '||num1);

dbms_output.put_line('num2= '||num2);

end;

示例4:将过程的执行权限授予其他用户

GRANT EXECUTE ON find_emp TO scott;

GRANT EXECUTE ON swap TO PUBLIC;

将find_emp过程的执行权限授予给用户scott,将执行swap过程的权限授予所有数据库用户。

删除过程语法:DROP PROCEDURE procudure_name;

2、函数

定义函数的语法如下:

CREATE [OR REPLACE] FUNCTION function_name

[(parameter_list)]

RETURN datatype

{IS|AS}

[local_declarations]

BEGIN

executable_statements

[EXCEPTION

exception_handlers]

END [function_name];

其中:function_name是函数的名称。

parameter_list是参数列表。

local_declarations是局部声明。

executable_statements是可执行语句。

exception_handlers是异常处理程序。

使用函数时注意:形式参数必须只使用数据库类型,不得使用PL/SQL类型。函数的返回类型也必须是数据库类型。

函数不能单独执行,只能通过SQL语句或PL/SQL程序块来调用。

示例5:演示如何创建函数

create or replace function fun_hello

return varchar2 is

begin

return '朋友,您好';

end;

调用函数:select fun_hello from dual;

函数的授权:同过和的授权一样具体请看示例4。

删除函数:DROP FUNCTION function_name

过程和函数的差异

过程 函数

作为PL/SQL语句执行 作为表达式的一部分调用

在规范中不包含RETURN子句 必须在规范中包含RETURN子句

不返回任何值 必须返回单个值

可以包含RETURN语句,但是与函数不同,它不能用于返回值 必须包含至少一条RETURN语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: