一、基本语法(以及与informix的比较)
create [or replace] procedure procedure_name (varible {IN|OUT|IN OUT} type) {IS|AS}
[varible { in | out | in out }] type;
[varible { in | out | in out }] type;
......
[cursor curor_name IS select subclause]
begin
begin
body
end [procedure_name];
for example:
create or replace procedure sp_login_error_count(user_name_var varchar2) IS
--创建名为sp_login_error_count的存储过程,并定义传参
--informix的语法(drop procedure sp_login_error_count;create procedure sp_login_error_count(user_name_var varchar(50)))
--创建名为sp_login_error_count的存储过程,并定义传参
--informix的语法(drop procedure sp_login_error_count;create procedure sp_login_error_count(user_name_var varchar(50)))
error_count_var integer;
--变量定义
--informix语法(define error_count_var integer;)
--变量定义
--informix语法(define error_count_var integer;)
begin
--程序开始
--informix语法一样
--程序开始
--informix语法一样
select error_count into error_count_var from users where user_name=user_name_var;
--select语句,找到的值放到变量中
--informix语法一样
--select语句,找到的值放到变量中
--informix语法一样
error_count_var :=error_count_var+1;
--变量加1,这是pl/sql的变量赋值运算。
--informix语法(let error_count_var=error_count_var+1;)
--变量加1,这是pl/sql的变量赋值运算。
--informix语法(let error_count_var=error_count_var+1;)
update users set error_count= error_count_var where user_name =user_name_var ;
--更新统计数
--informix语法一样
--更新统计数
--informix语法一样
commit;
--提交
--informix不需要提交
--提交
--informix不需要提交
end sp_login_error_count;
--结束存储过程
--informix语法(end procedure;)
--结束存储过程
--informix语法(end procedure;)
ORACLE存储过程执行为execute procedure_name或exec procedure_name
INFORMIX存储过程执行为execute procedure procedure_name
pl/sql程序由三个块组成:声明部分、执行部分、异常处理部分
declare
/* 声明部分: 在此声明PL/SQL用到的变量,类型及光标 */
begin
/* 执行部分: 过程及SQL语句 , 即程序的主要部分 */
Exception
/* 执行异常部分: 错误处理 */
End;
/* 声明部分: 在此声明PL/SQL用到的变量,类型及光标 */
begin
/* 执行部分: 过程及SQL语句 , 即程序的主要部分 */
Exception
/* 执行异常部分: 错误处理 */
End;
其中 执行部分是必须的。