#存储过程
存储过程是数据库里的一种PL对象。
分布式部署中不能创建和运行存储过程。
# 创建存储过程
使用CREATE PROCEDURE语句创建存储过程,其语法定义为:
create procedure::=
procedure_head_clause::=
invoker_rights_clause::=
procedure_body_clause::=
# or replace
当要创建的存储过程已经存在时,将其进行重建。
# editionable | noneditionable
用于语法兼容,无实际含义。
# procedure_name
存储过程的名称,不可省略,且需符合YashanDB的对象命名规范。
# argument_define
定义存储过程的参数(形参),可省略,此时procedure_name()=procedure_name。最多可以指定4095个参数。
# invoker_rights_clause
见首页invoker_rights_clause部分描述。
# variable_declare
声明PL过程体的全局变量,可省略。
PL声明。
# plsql_statements
定义过程体中的执行语句,为PL语句中的一项或多项。
示例(单机、共享集群部署)
CREATE OR REPLACE PROCEDURE ya_proc(i INT) IS
BEGIN
CASE i
WHEN 1 THEN
DBMS_OUTPUT.PUT_LINE('hello');
WHEN 2 THEN
DBMS_OUTPUT.PUT_LINE('world');
END CASE;
END ya_proc;
/
# 运行存储过程
# sql语句中调用
通过CALL、EXEC语句调用存储过程,其语法定义为:
arguments为与argument_define一一对应的实参。
示例
exec ya_proc(1);
--result
hello
# 过程体中调用
格式为:procedure_name(arguments);。
arguments为与argument_define一一对应的实参。
示例(单机、共享集群部署)
BEGIN
ya_proc(1);
ya_proc(2);
END;
/
--result
hello
world
# 删除存储过程
使用DROP PROCEDURE语句删除存储过程。
# 修改存储过程
使用ALTER PROCEDURE语句修改存储过程。