-
本節以java為例來訪問存儲過程,和存儲函數
查看全部 -
存儲過程11114
查看全部 -
結論:存儲過程完全可以取代自定義存儲函數
查看全部 -
包頭負責聲明,包體負責實現
查看全部 -
調用存儲函數
查看全部 -
存儲過程的調用
查看全部 -
存儲過程與存儲函數的具體區別和使用場景
查看全部 -
存儲函數必須有返回值
查看全部 -
帶輸入參數的存儲過程
注意:
帶參數要指明是輸入參數還是輸出參數(返回值)
一般不在存儲過程或者函數提交或者回滾事務,而是交給調用者去操作事務
查看全部 -
存儲過程只能創建或者替換,不能修改,因此語法定義為 create [or replace]
存儲過程的demo和兩種調用方式
查看全部 -
除此之外,可以認為存儲過程和存儲函數是一樣的!??!
查看全部 -
在應用中訪問包的存儲過程,需要帶上包名,(圖)查看全部
-
? ? ? ? ? ? 在out參數中使用光標,包頭包體等。
查看全部 -
? ? ? ? ? ? 用pl/sql工具如何便捷創建包頭?
查看全部 -
1.創建存儲過程:
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.調用:
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 并非所有變量都已綁定”
如果去掉冒號就不會報錯,但是輸出結果和刪除這一句是一樣的。
查看全部 -
1.存儲函數格式:create or replace function 函數名(參數表)
return 函數值類型
as
PLSQL子程序體;
2.舉例return所在位置:
調用如上存儲函數,注意獎金字段要轉為非空,否則輸出結果為空:
3.調用函數:
查看全部 -
例子(建立存儲過程,然后用pl/sql程序調用):
---給學號加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 過程名(參數表)
as PLSQL子程序體;
as 相當于PL/SQL程序中的declare,as不可省略,后面跟說明部分,定義光標變量之類的。
?3.如何調用存儲過程:
create or replace PROCEDURE sayhello as
begin
? dbms_output.put_line('HELLO WORLD');
end;
? 3.1.調用存儲過程:
execute? sayhello;
可簡寫為 exec? sayhello;
3.2.通過PLP/SQL 程序調用
BEGIN
? sayhello();
? sayhello();
END;
查看全部
舉報