–1
–建立儲存過程,包括3部分,宣告,執行,異常處理
建立儲存過程不需要使用declare關鍵字,而是使用create
or replace關鍵字
in模式引數
–out:輸出型別的引數create or replace procedure pro_insertdept is
begin
insert into dept values(77,'市場拓展部','jilin');
commit;
dbms_output.put_line('插入成功!');
end;
/
–使用pl/sql塊呼叫out模式的儲存過程create or replace procedure select_dept(
num_deptno in number,
var_dname out dept.dname%type,
var_loc out dept.loc%type
)isbegin
select dname,loc into var_dname,var_loc
from dept
where deptno=num_deptno;
expection
when no_data_found then
dbms_output.put_line('666');
end select_dept;
/
–使用exec命令執行out模式的儲存過程set serverout on;
declare
var_dname dept.dname%type;
var_loc dept.loc%type;
begin
select_dept(99,var_dname,var_loc);
dbms_output.put_line(var_dname||var_loc);
end;
/
–需要用variable關鍵字宣告兩個變數,用以儲存out引數
–此時看不到值,可用print命令列印輸出值variable var_dname varchar2(50);
variable var_loc varchar2(50);
exec select_dept(15,:var_dname,:var_loc);
print var_dname var_loc;
–使用select語句輸出
若宣告了out模式的引數,則在執行儲存過程時,select :var_dname,:var_loc
from dual;
必須為out引數提供變數,以便接收out引數的返回值
否則,程式執行後將會出現錯誤。
–in out模式
–呼叫儲存過程pro_squarecreate or replace procedure pro_square(
num in out number,
flag in boolean)is
i int:=2;
begin
if flag then
num:=power(num,i);
else
num:=sqrt(num);
end if;
end;
/
in引數的預設值set serverout on;
declare
var_number in number;
var_temp number;
boo_flag boolean;
begin
var_temp:=3;
var_number:=var_temp;
boo_flag:=false;
pro_square(var_number,boo_flag);
if boo_flag then
dbms_output.put_line(var_temp||'的平方為:'||var_number);
else
dbms_output.put_line(var_temp||'平方根為:'||var_number);
end if;
end;
/
–呼叫該儲存過程create or replace procedure insert_dept(
num_deptno in number,
var_dname in varchar2 default '綜合樓',
var_loc in varchar2 default '北京')is
begin
insert into dept values(num_deptno,var_dname,var_loc);
end;
/
declare
row_dept dept%rowtype;
begin
insert_dept(57,var_loc=>'太遠');
commit;
select * into row_dept from dept where deptno=57;
dbms_output.put_line('');
end;
/
Oracle學習之儲存過程
儲存過程可以說是乙個記錄集吧,它是由一些t sql語句組成的 塊,這些t sql語句 像乙個方法一樣實現一些功能 對單錶或多表的增刪改查 然後再給這個 塊取乙個名字,在用到這個功能的時候呼叫他就行了 建立儲存過程 create proc edure procedure name number var...
Oracle 之儲存過程(二)
一 有輸入輸出引數的儲存過程 根據員工號,查詢並返回該員工的年薪,姓名,獎金 create or replace function fun get annuasal by empno2 p empno emp.empno type,p ename out emp.ename type,p com o...
oracle學習筆記之儲存過程
user scott sql create table mytest name varchar2 30 password varchar2 30 table created sql create or replace procedure pro sp1 is 建立乙個簡單的儲存過程 2 begin ...