-
以不帶參數(shù)的存儲過程為例
查看全部 -
數(shù)據(jù)庫對象:表、視圖、索引、序列、同義詞、存儲過程、存儲函數(shù)
? ? ? ? ? ? ? ? ? ?完成不同的作用
存儲過程/函數(shù):存儲在數(shù)據(jù)庫中供所有用戶調(diào)用的子程序(PLSQL構(gòu)成)
相同點:完成特定功能的程序
區(qū)別:是否用return語句返回值(存儲函數(shù)有return返回值)
查看全部 -
out參數(shù)中使用光標
申明結(jié)構(gòu)
包頭
包體
查看全部 -
程序調(diào)用,指定返回值類型? OracleTypes.
查看全部 -
java訪問數(shù)據(jù)庫
查看全部 -
過程和函數(shù)都可以通過ot指定一個輸出參數(shù),
查看全部 -
存儲函數(shù)方式
不推薦遠程調(diào)試
reture number
as
begin
return
end
預控 nvl(xx,o)
查看全部 -
帶參數(shù)的存儲過程
輸入?yún)?shù) in? ?輸出參數(shù)out
在存儲過程中可以卸commit和rollcax,但是存儲過程作為子程序,一般不在其中寫,調(diào)用時統(tǒng)一提交或回滾
查看全部 -
創(chuàng)建時檢查同名過程? or repalce? 可作為修改使用
存儲過程無返回值? 存儲函數(shù)無返回值
編寫好后運行編譯
兩種執(zhí)行方式? exec? ?和plcql 通過begin和end
查看全部 -
----注意:一般情況下,返回值只有一個,用存儲函數(shù);否則,當沒有返回值,或者返回值有多個,則使用存儲過程
in和out參數(shù)(輸入輸出參數(shù))
----out參數(shù):查詢某個員工的姓名 月薪和職位
create or replace procedure queryempinform(eno in number,pename out varchar2,psal out number,pjob out varchar2)
as
begin
---得到該員工的姓名 月薪和職位
select ename,empjob into pename,psal,pjob from emp where empno=eno;
end;
/
輸出參數(shù)可以用作返回值一樣返回給調(diào)用的客戶端
查看全部 -
存儲函數(shù)
函數(shù)為一命名的存儲程序,可帶參數(shù),并返回一計算值。
函數(shù)和過程的結(jié)構(gòu)類似,但必須有一個return子句,用于返回函數(shù)值
---注意:當一個表達式包含null值,往往會導致得不到正確的結(jié)果,或者沒有結(jié)果
? ? 所以最好的做法是使用nvl函數(shù)將空值以0代替
--查詢某個員工的年收入
create or replace function queryempincome(eno in number)
return number
as
?psal emp.sal%type;
?pcomm emp.comm%type;
begin
?---得到該員工的月薪和獎金
?select sal,comm into psal,pcomm from emp where empno=eno;
?
?--直接返回年收入
?return psal*12+nvl(pcomm,0);
end;
/
查看全部 -
帶參數(shù)的存儲過程
舉例:為指定的員工漲100元的工資,打印漲前和漲后的工資
如果帶參,需要指定是輸入?yún)?shù)還是輸出參數(shù)
create or replace procedure raisesalary(eno number)
as
?---定義一個變量保存漲前的薪水
?psal emp.sal%type;
begin
?---得到員工漲前的薪水
?select sal into psal from emp where empno=eno;
?---給該員工漲100
?update emp set sal=sal+100 where empno=eno;
?
?---需不需要commit?
?---注意:一般不在存儲過程或者存儲函數(shù)中 commit和rollback
?
?---打印漲前和漲后的工資
?dbms_output.put_line('漲前:'||psal||'漲后:'||(psal+100));
end;
/
一般在調(diào)用存儲過程或者函數(shù)的時候再commit,這樣可以保證所有執(zhí)行是在同一個事物中進行的
如:
begin
raisesalary(7839);
raisesalary(7566);
commit;
end;
/
查看全部 -
創(chuàng)建和使用存儲過程
用CREATE PROCEDURE 命令建立存儲過程和存儲函數(shù)。
語法:
create [or replace] PROCEDURE 過程名(參數(shù)列表) AS?
????plsql子程序體;
/*
調(diào)用存儲過程有兩種方式:
1.exec sayHelloworld
2.調(diào)用兩次這個存儲過程
begin
sayHelloworld();
sayHelloworld();
end;
/
*/
create or replace procedure sayHelloworld
as ---相當于declare說明部分,如果沒有,可以不寫
begin
dbms_output.put_line('Hello World');
end;
/
end;
/
查看全部 -
數(shù)據(jù)庫對象
存儲過程、存儲函數(shù)、表、視圖、索引、序列、同義詞
存儲過程和存儲函數(shù)
指存儲在數(shù)據(jù)庫中供所有程序調(diào)用的子程序叫存儲過程、存儲函數(shù)
????存儲過程和存儲函數(shù)的相同點:完成特定功能的程序
存儲過程和存儲函數(shù)的區(qū)別:是否用return語句返回值,存儲函數(shù)沒有return返回語句
查看全部 -
1.java程序調(diào)用存儲函數(shù): {call 存儲過程名稱 (args1,args2。。。。)} 2.callableStatement call: call.prepareCall(sql) call.setInt(1,value) call.registerOutParameter(2,OracleTypes.NUMBER) call.getString(1,變量名)查看全部
舉報