PL/SQL 存储过程
?
無參數的存儲過程:
create or replace procedure out_time
is
begin
??dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd'));
end;
/
調用: exe
PL/SQL復習九 存儲過程?
無參數的存儲過程:
create or replace procedure out_time
is
begin
??dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd'));
end;
/
調用: exec out_time;
--------------------------------------------------------------
帶有in參數的過程:
create or replace procedure add_employee
(
??eno in number,
??name in varchar2,--注意,定義參數的時候不能指定大小
??sal in number
)
is
begin
??insert into emp(empno,ename,sal) values(eno,name,sal);
end;
/
調用:exec add_employee(5569,'lixin',5589);
--------------------------------------------------------------
帶有out 參數的過程:
create or replace procedure query_employee
(
??eno in number,
??name out varchar2,
??salary out number
)
is
begin
??select ename, sal into name, salary from emp where empno = eno;
end;
/
調用:
SQL> var name varchar2(20);
SQL> var salary number;
SQL> exec query_employee(7788,:name,:salary);
?
PL/SQL procedure successfully completed
name
---------
SCOTT
salary
---------
3000
--------------------------------------------------------------
?
帶有in out參數的過程:
create or replace procedure pro_in_out
(
??num1 in out number,
??num2 in out number
)
is?
??v1 number;
??v2 number;
begin
??v1 := num1 / num2;
??v2 := mod(num1,num2);
??num1 := v1;
??num2 := v2;
end;
/
調用:
SQL> var n1 number;
SQL> var n2 number;
SQL> exec :n1 := 100;
SQL> exec :n2 := 30;
SQL> exec pro_in_out(:n1, :n2); --不能直接傳值,必須傳變量,因為是in out類型參數
?
PL/SQL procedure successfully completed
n1
---------
3.33333333333333
n2
---------
10
?
傳遞參數時可以根據位置傳遞,也可以根據名稱傳遞:
exec add_employee(123,name=>'lixin',sal=>88564);
?
查看過程源碼:
select text from user_source where name = 'ADD_EMPLOYEE';
?
刪除過程:
drop procedure add_employee;
原文出處:http://zhidao.kaifajie.cn/article/34575.html總結
以上是生活随笔為你收集整理的PL/SQL 存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【oracle案例】ORA-01102:
- 下一篇: Asp.net MVC使用Filter解