先描述一下Oracle存储过程的基本概念:
概念存储子程序应用子程序存储位置 存储在数据库中存储在应用程序中调用方式任何数据库工具或应用中都可以调用只用在子程序建立的应用中才能调用相互调用 不可以调用应用子程序可以调用存储子程序建立子程序的文档存储的位置
Oracle数据库存储过程的语法:
CREATE [ORReplace]PROCEDURE[schema.] procedure_name
[(argument [{IN|OUT|INOUT}] datatype,
...
argument [{IN|OUT|INOUT}] datatype)]
{IS | AS}
[descriptionpart说明部分]
BEGIN
SQLSTATEMENT语句序列
[EXCEPTION例外处理]
END[procedureName过程名];
使用例子:
--创建存储过程
CREATE OR REPLACE Procedure Proc_Insert2
(
senterpriseno in int,
sbankname in varchar2 ,
spayname in varchar2,
sbankno in varchar2,
sman in varchar2,
spayno in varchar2
)
is
begin
Insert into ACCOUNTS(id, enterpriseno, bankname,bankno, payname, man,add_time,payno)
values(seq_ACCOUNTS.nextval,senterpriseno,sbankname,sbankno,spayname,sman ,sysdate,spayno);
end Proc_Insert2;
--调用存储过程
begin
Proc_Insert2(1111,'银行','10010','下达','admin', '216546464');
commit;
end;
使用一个添加的存储过程例子来进行解释Oracle存储过程的语法。
在PL/SQL中执行,创建存储过程。
右键创建的存储过程点击“编辑”,点击“F8” 无错误表示创建无误
可以用上面的调用存储过程进行测试,或者右键存储过程,点击“测试”进行测试
创建一个带返回参数的存储过程
CREATE OR REPLACE Procedure testret
(v_payno IN accounts.payno%TYPE,
v_enterpriseno OUT accounts.enterpriseno%TYPE)
is
begin
SELECT enterpriseno INTO v_enterpriseno FROM accounts WHERE payno=v_payno;
DBMS_OUTPUT.PUT_LINE('编码为'||v_payno||'的员工已经查到!');
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生其它错误!');
end testret;
其中in 表示输入
out表示输出
同上述 右键编辑,F8执行无误,右键进行测试
执行成功,会返回sql语句查询结果。