Oracle中 關于數據庫存儲過程和存儲函數的使用建
導讀:1建站知識本篇文章,小編將為大家介紹,在Oracle中 關于數據庫存儲過程和存儲函數的使用,有需要的朋友可以參考一下網站建設多少錢建設網站。
存儲過程和存儲函數指存儲在數據庫中供所有用戶程序調用的子程序叫存儲過程、存儲函數。存儲過程沒有返回值。存儲函數有返回值 創建存儲過程
用CREATE PROCEDURE命令建立存儲過程和存儲函數。
語法:create [o網站建設制作r replace] PROCEDURE過程名(參數列表) AS
PLSQL子程序體; 存儲過程示例:為指定的職工在原工資的基礎上長10%的工資 /*為指定的職工在原工資的基礎上長10%的工資,并打印工資前和工資后的工資*/SQL> create or replace procedure raiseSalary(empid in number) as pSal emp.sal%type;--保存員工當前 工資 begin--查詢該員工的工資 select sal into pSal from emp where empno=empid;--給該員工漲工資 update emp set sal = sal*1.1 where empno=empid;--打印漲工資前后的工資 dbms_output.put_line('員工號:' || empid || '漲工資前 ' || psal || '漲工資后' || psal*1.1); end; 1 /Procedure created--存儲過程調用--方法一SQL> set serveroutput onSQL> exec raisesalary(7369);員工號:7369漲工資前800漲工資后880方法二 set serveroutput onbegin raisesaseo網站優化lary(7369);end;/PL/SQL procedure successfully completed
存儲函數
函數(Function)為一命名的存儲程序,可帶參數,并返回一計算值。函數和過程的結構類似,但必須有一個RETURN子句,用于返回函數值。函數說明要指定函數名、結果值的類型,以及參數類型等。
建立存儲函數的語法:CREATE [OR REPLACE] FUNCTION函數名(參數列表)RETURN 函數值類型ASPLSQL子程序體; 示例:查詢某職工的年收入。SQL> /**/ /* 查詢某職工的總收入 */ create or replace function queryEmpSalary(empid in number) return number as pSal number; --定義變量保存員工的工資 pComm number; --定義變量保存員工的獎金 begin select sal,comm into psal,pcomm from emp where empno = empid; return psal*12+nvl(pcomm,0); end; /Function created l 函數的調用SQL> declare v_sal number; begin v_sal:=queryEmpSalary(7934); dbms_output.put_line('salary is:'|| v_sal); end; /salary is:15600PL/SQL procedure successfully completedSQL> begin dbms_output.put_line('salary is:'|| queryEmpSalary(7934)); end; /salary is:15600PL/SQL procedure successfully completed
觸發器
數據庫觸發器是一個與表相關聯的、存儲的PL/SQL程序。每當一個特定的數據操作語句(Insert,update,delete)在指定的表上發出時,Oracle自動地執行觸發器中定義的語句序列。
觸發器的類型
語句級觸發器
在指定的操作語句操作之前或之后執行一次,不管這條語句影響了多少行。
行級觸發器(FOR EACH ROW)
觸發語句作用的每一條記錄都被觸發。在行級觸發器中使用old和new偽公司網站建設記錄變量,識別值的狀態。
創建觸發器CREATE [or REPLACE] TRIGGER 觸發器名 {BEFORE | AFTER} {DELETE | INSERT | UPDATE [OF列名]} ON 表名 [FOR EACH ROW [WHEN(條件) ] ] PLSQL 塊
示例1:限制非工作時間向數據庫插入數據SQL> create or replace trigger securityEmp before insert on emp declare begin if to_char(sysdate,'day')in('星期四','星期六','星期日') or to_number(to_char(sysdate,'hh24'))not between 8 and 18 then raise_application_error(-20001,'不能在非工作時間插入數據。'); end if; end; /Trigger created觸發語句與偽記錄變量的值
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章Oracle中 關于數據庫存儲過程和存儲函數的使用建主要講述存儲過程,函數,Oracle中 關于數據庫存儲過程和存網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_6170.html