-
本節(jié)以java為例來訪問存儲過程,和存儲函數(shù)
查看全部 -
存儲過程11114
查看全部 -
結(jié)論:存儲過程完全可以取代自定義存儲函數(shù)
查看全部 -
包頭負(fù)責(zé)聲明,包體負(fù)責(zé)實現(xiàn)
查看全部 -
調(diào)用存儲函數(shù)
查看全部 -
存儲過程的調(diào)用
查看全部 -
存儲過程與存儲函數(shù)的具體區(qū)別和使用場景
查看全部 -
存儲函數(shù)必須有返回值
查看全部 -
帶輸入?yún)?shù)的存儲過程
注意:
帶參數(shù)要指明是輸入?yún)?shù)還是輸出參數(shù)(返回值)
一般不在存儲過程或者函數(shù)提交或者回滾事務(wù),而是交給調(diào)用者去操作事務(wù)
查看全部 -
存儲過程只能創(chuàng)建或者替換,不能修改,因此語法定義為 create [or replace]
存儲過程的demo和兩種調(diào)用方式
查看全部 -
除此之外,可以認(rèn)為存儲過程和存儲函數(shù)是一樣的?。?!
查看全部 -
在應(yīng)用中訪問包的存儲過程,需要帶上包名,(圖)查看全部
-
? ? ? ? ? ? 在out參數(shù)中使用光標(biāo),包頭包體等。
查看全部 -
? ? ? ? ? ? 用pl/sql工具如何便捷創(chuàng)建包頭?
查看全部 -
1.創(chuàng)建存儲過程:
create or replace procedure queryimg(pstu_id? in number,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pstuname out varchar2,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?page? ? ?out varchar2,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pclassid out varchar2) as
begin
select t.stuname,t.age,t.classid into pstuname,page,pclassid from zhaozy.student t where stuid = pstu_id;
end;
2.調(diào)用:
declare
? pstu_id? varchar2(256);
? pstuname varchar2(256);
? page? ? ?varchar2(256);
? pclassid varchar2(256);
begin
? pstu_id := 1;
? queryimg(pstu_id? => pstu_id,
? ? ? ? ? ?pstuname => pstuname,
? ? ? ? ? ?page? ? ?=> page,
? ? ? ? ? ?pclassid => pclassid);
? dbms_output.put_line('pstuname=' || pstuname);
? --? :pstuname := pstuname;
? dbms_output.put_line('page=' || page);
? -- :page := page;
? dbms_output.put_line('pclassid=' || pclassid);
? -- :pclassid := pclassid;
end;
3.疑問:
:page := page;這里冒號什么作用?
加上之后報錯:“ORA-01008 并非所有變量都已綁定”
如果去掉冒號就不會報錯,但是輸出結(jié)果和刪除這一句是一樣的。
查看全部 -
1.存儲函數(shù)格式:create or replace function 函數(shù)名(參數(shù)表)
return 函數(shù)值類型
as
PLSQL子程序體;
2.舉例return所在位置:
調(diào)用如上存儲函數(shù),注意獎金字段要轉(zhuǎn)為非空,否則輸出結(jié)果為空:
3.調(diào)用函數(shù):
查看全部 -
例子(建立存儲過程,然后用pl/sql程序調(diào)用):
---給學(xué)號加100
create or replace procedure STU(v_name in varchar) as
? p_stu_id pm_stu.stu_id%type;
begin
? select stu_id into p_stu_id from pm_stu where? stu_name= v_name;
? update pm_stu set stu_id = stu_id + 100 where stu_name = v_name;
? dbms_output.put_line('漲前:' || p_stu_id || '漲后: ' || (p_stu_id + 100));
end;
select t.*,rowid from zhaozy.pm_stu t;
BEGIN
? STU('李四');
? rollback;
? STU('張三');
? commit;
END;
查看全部 -
create or replace PROCEDURE 過程名(參數(shù)表)
as PLSQL子程序體;
as 相當(dāng)于PL/SQL程序中的declare,as不可省略,后面跟說明部分,定義光標(biāo)變量之類的。
?3.如何調(diào)用存儲過程:
create or replace PROCEDURE sayhello as
begin
? dbms_output.put_line('HELLO WORLD');
end;
? 3.1.調(diào)用存儲過程:
execute? sayhello;
可簡寫為 exec? sayhello;
3.2.通過PLP/SQL 程序調(diào)用
BEGIN
? sayhello();
? sayhello();
END;
查看全部
舉報