-
Connect Statements查看全部
-
授權(quán)
grant debug connect session,debug any procedure to scott;
查看全部 -
創(chuàng)建和使用帶參數(shù)的存儲過程
舉例:為指定員工,漲100塊錢的工資;并且打印漲前和漲后的薪水。
注意:存儲過程和存儲函數(shù)的參數(shù)需要標明該參數(shù)是輸入?yún)?shù)還是輸出參數(shù)。這里需要的是輸入?yún)?shù),也就是需要輸入員工號。
注意:這里已經(jīng)對數(shù)據(jù)庫記錄做出了更改,一般不在存儲過程中提交事物,因為這樣不能保證在調(diào)用存儲過程的代碼在一個事物中。也就是哪里調(diào)用存儲過程,哪里提交事物。
證明:oracle中執(zhí)行完插入,需要commit,否則查看不到。這是oracle數(shù)據(jù)庫的隔離級別導致的。
帶參數(shù)存儲過程創(chuàng)建:
帶參數(shù)存儲過程調(diào)用:像如圖中這種情況,就可以保證這兩個操作在同一事物中。
注意:存儲過程的參數(shù)聲明時,只能聲明類型,不可以指定長度。
查看全部 -
創(chuàng)建和使用存儲過程
創(chuàng)建存儲過程語法:如圖。注意:存儲過程只能創(chuàng)建或者替換,不能修改,如果要修改就使用replace,它的意思是指如果創(chuàng)建時有相同的存儲過程就替換該存儲過程。其中AS代表聲明(變量、光標)。
舉例:通過存儲過程,打印Hello World。注意:在講解PL/SQL時,如果沒有聲明部分,那么可以不寫declare部分,但是在存儲過程中AS是不能省略的,即使沒有聲明。Oracle數(shù)據(jù)庫存儲數(shù)據(jù)庫對象默認采取大寫方式。
創(chuàng)建存儲過程:
調(diào)用存儲過程:
1、execute?存儲過程名。
2、PL/SQL中調(diào)用,直接寫存儲過程名。
查看全部 -
Oracle存儲過程和存儲函數(shù)(自定義函數(shù))
定義:存儲在數(shù)據(jù)庫中供所有用戶程序調(diào)用的子程序(PL/SQL程序)叫存儲過程,存儲函數(shù)。
存儲過程和存儲函數(shù)的異同點:相同點——》完成特定功能的程序。不同點——》存儲函數(shù)可以使用return語句返回值。
數(shù)據(jù)庫對象:表、視圖、索引、序列、同義詞、存儲過程、存儲函數(shù)。
查看全部 -
--帶參數(shù)的存儲過程
--舉例:為指定的員工漲100元的工資,打印漲前和漲后的工資
--如果帶參,需要指定是輸入?yún)?shù)還是輸出參數(shù)
create or replace procedure raisesalary(eno in number)as
?---定義一個變量保存漲前的薪水(引用emp表sal的數(shù)據(jù)類型)
?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;
/
查看全部 -
一般不在存儲過程或者存儲函數(shù)中,commit和rollback
查看全部 -
? --增加未找到用戶拋出異常
? CREATE OR REPLACE PROCEDURE PROSCOTTEMPADDSAL(V_EMPNO IN NUMBER,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MSG? ? ?OUT VARCHAR2) AS
? V_COUNT INTEGER := 0;
? MY_ERR EXCEPTION; --自定義異常
BEGIN
? MSG := 'OK';
? SELECT COUNT(0) INTO V_COUNT FROM SCOTT.EMP A WHERE A.EMPNO = V_EMPNO;
? IF (V_COUNT > 0) THEN
? ? BEGIN
? ? ? UPDATE SCOTT.EMP SET SAL = SAL * 1.1 WHERE EMPNO = V_EMPNO;
? ? END;
? ELSE
? ? RAISE MY_ERR;
? END IF;
EXCEPTION
? WHEN MY_ERR THEN
? ? MSG := '未找到工號為:[' || V_EMPNO || ']的員工信息!';
? ? DBMS_OUTPUT.PUT_LINE(MSG);
END PROSCOTTEMPADDSAL;
查看全部 -
存儲過程不能用return返回值,而存儲函數(shù)可以
查看全部 -
存儲過程和存儲函數(shù)的區(qū)別在于存儲函數(shù)可以返回一個值,存儲過程不可以
語法:
create or replace procedure 名稱(參數(shù))
AS
PLSQL子程序;
調(diào)用存儲過程
exec sayhellword();
begin
sayhelloword();
sayhelloword();
end;
調(diào)用存儲過程:set serveroutput on?
查看全部 -
存儲在數(shù)據(jù)庫中共所有用戶程序調(diào)用的子程序叫存儲過程/存儲函數(shù)
查看全部 -
指存儲在數(shù)據(jù)庫中供所有用戶程序調(diào)用的子程序叫存儲過程、存儲函數(shù)。
相同點:完成特定功能的程序
區(qū)別:是否用return語句返回值。有return的是存儲函數(shù),存儲過程不允許使用return。
查看全部 -
存儲過程都是數(shù)據(jù)庫的對象。查看全部
-
--?第一個存儲過程:打印Hello?World /* 調(diào)用存儲過程: 1.exec?sayhelloworld(); 2.begin ????sayhelloworld(); ????sayhelloworld(); ???end; ???/ */ create?or?replace?procedure?sayhelloworld as --說明部分 begin ????dbms_output.put_line('Hello?World'); ?end; ?/
查看全部 -
表、視圖、索引、序列、同義詞、存儲過程、存儲函數(shù)都是對象
存儲過程和存儲函數(shù)指存儲在數(shù)據(jù)庫中供所有用戶程序調(diào)用的子程序叫存儲過程、存儲函數(shù)。
存儲過程和存儲函數(shù)的相同點:完成特定功能的程序。
存儲過程和存儲函數(shù)的區(qū)別:是否用return語句返回值
查看全部
舉報