创建或修改存储过程¶
建立存储过程可以指定所使用的程序设计语言。PLOSCAR是编写数据库存储过程的一种过程语言。它结合了神通数据库SQL语句的数据操作能力和过程化语言的流程控制能力,是神通数据库SQL语句的过程化扩展。PLOSCAR可以用神通数据库sql语句CREATE[OR REPLACE]PROCEDURE来创建或修改存储过程。
语法:
PLOSCAR过程
create_procedure ::=
param_decls ::=
param_decl ::=
pl_block ::=
参数:
proc_name
过程名
param_name
参数名,PROCEDURE支持,FUNCTION不支持。
IN OUT INOUT
参数输入/输出模式,缺省为IN。
IN表示输入型变量,其值由调用者传入,在函数执行过程中保持不变。
OUT表示输出型变量,初始值为NULL,其值可在函数执行过程中改变,在函数返回时将传给调用者。对于注明为OUT参数的,其输入是没有意义的,数据库会忽略输入,同时所有的OUT参数被初始化为NULL。
INOUT表示输入输出型变量,初始值为调用者设置,其值可变,在函数返回时将传给调用者。
data_type
函数参数或返回值的数据类型。
返回值类型目前只支持标量类型。
参数类型仅支持标量类型。
literal
参数缺省值,必须是一个PLOSCAR常数。另外,literal只在CREATE [ OR REPLACE ] PROCEDURE中有效,在CREATE [ OR REPLACE ] FUNCTION中不支持literal。
说明:
参数个数最大值为 1024。
PLOSCAR不支持过程名重载。
CREATE PROCEDURE用于创建一个新的过程,如果已存在同名的过程,则创建失败;
CREATE OR REPLACE PROCEDURE用于创建或修改一个过程,如果已存在同名的过程,则替换它,否则创建新的过程。注意,CREATE OR REPLACE不能修改一个现有过程的返回值类型,要这样做的话,你必须删除然后重新创建该过程。
在创建或修改过程时,PLOSCAR引擎会对过程的语法正确性进行检查,如果发现语法错误,则拒绝创建或修改过程。
<pl_block>语句块由声明段和执行过程段两部分组成。不允许包括CONNECT/DISCONNECT语句、动态SQL语句、COMMIT/ROLLBACK语句。语句块中不区分大小写。执行过程段以BEGIN开始,以END结束。<pl_block>语句块中也可以嵌套语句块,结构同上。语句块中的变量声明服从局部性原则。
<pl_block>块结构的详细语法将在后面的章节中介绍。
示例:创建存储过程¶
-- 清理环境
DROP PROCEDURE myadd;
create or replace procedure myadd(a int,b int) as
c int;
begin
c = a+b;
dbms_output.put_line('和为:' || c);
end;
/
exec myadd(3,5);
--删除过程
DROP PROCEDURE myadd;