亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle中 關于數據庫存儲過程和存儲函數的使用

2024-08-29 13:55:25
字體:
來源:轉載
供稿:網友
存儲過程和存儲函數指存儲在數據庫中供所有用戶程序調用的子程序叫存儲過程、存儲函數。
存儲過程沒有返回值。存儲函數有返回值

創建存儲過程
用CREATE PROCEDURE命令建立存儲過程和存儲函數。

語法:
create [or 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 on
SQL> exec raisesalary(7369);

員工號:7369漲工資前
800漲工資后880

方法二
set serveroutput on
begin
raisesalary(7369);
end;
/

PL/SQL procedure successfully completed


存儲函數
函數(Function)為一命名的存儲程序,可帶參數,并返回一計算值。函數和過程的結構類似,但必須有一個RETURN子句,用于返回函數值。函數說明要指定函數名、結果值的類型,以及參數類型等。

建立存儲函數的語法:

CREATE [OR REPLACE] FUNCTION函數名(參數列表)
RETURN 函數值類型
AS
PLSQL子程序體;


示例:查詢某職工的年收入。
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:15600

PL/SQL procedure successfully completed

SQL> begin
dbms_output.put_line('salary is:'|| queryEmpSalary(7934));
end;
/

salary is:15600

PL/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

觸發語句與偽記錄變量的值

觸發語句

:old

:new

Insert

所有字段都是空(null)

將要插入的數據

Update

更新以前該行的值

更新后的值

delete

刪除以前該行的值

所有字段都是空(null)

示例2:確認數據(檢查emp表中sal的修改值不低于原值)
SQL> create or replace trigger checkSal
before update of sal on emp
for each row
declare
begin
if :new.sal<:old.sal then
raise_application_error(-20001,'更新后的薪水比更新前小');
end if;
end;
/

Trigger created
運行后結果:
SQL> update emp set sal=260 where empno=7499;

update emp set sal=260 where empno=7499

ORA-20001: 更新后的薪水比更新前小
ORA-06512: 在 "SCOTT.CHECKSAL", line 4
ORA-04088: 觸發器 'SCOTT.CHECKSAL'執行過程中出錯

觸發器總結
觸發器可用于
•數據確認
•實施復雜的安全性檢查
•做審計,跟蹤表上所做的數據操作等

查詢觸發器、過程及函數
•Select * from user_triggers;
•Select * from user_source;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久中文字幕| 国产69精品久久久久9| 国产欧美久久一区二区| 一区二区三区黄色| 久久国产加勒比精品无码| 日韩精品一区二区三区第95| 国产精品美女www爽爽爽视频| 在线观看久久久久久| 久久精品国产成人| 成人激情黄色网| 亚洲福利视频网站| 黑丝美女久久久| 91久久久久久久久| 欧美一级淫片丝袜脚交| 久久亚洲国产精品| 色阁综合伊人av| 国产精品久久久久av免费| 亚洲国产精品高清久久久| 国产精品男人的天堂| 8x海外华人永久免费日韩内陆视频| 91在线视频一区| 欧美xxxwww| 久久精品男人天堂| 亚洲国产精彩中文乱码av在线播放| 97在线观看视频国产| 国语自产精品视频在线看一大j8| 国产精品久久久久久久久久三级| 欧美老少配视频| 伊人伊人伊人久久| 欧美日韩一区二区免费视频| 日韩av网站电影| 亚洲成人999| 亚洲人成免费电影| 精品福利在线视频| 欧美精品福利在线| 国产精品视频最多的网站| 最近中文字幕日韩精品| 韩剧1988在线观看免费完整版| 亚洲香蕉成人av网站在线观看| 国产成人精品免高潮在线观看| 日韩免费中文字幕| 美日韩精品免费视频| 久久久999国产| 911国产网站尤物在线观看| 亚洲欧洲日产国码av系列天堂| 国产精品视频xxxx| www亚洲欧美| 久久偷看各类女兵18女厕嘘嘘| 欧美在线观看一区二区三区| 日韩美女在线看| 777777777亚洲妇女| 国产精品va在线播放我和闺蜜| 亚洲国产精品美女| 亚洲成人久久电影| 国产精品高潮呻吟久久av无限| 久久久亚洲影院| 欧美日韩国产区| 欧美成人精品三级在线观看| 亚洲免费电影一区| 亚洲一级免费视频| 精品久久久香蕉免费精品视频| 在线观看日韩专区| 国产精品日韩av| 欧美极品美女电影一区| 国产精品www色诱视频| 国产精品精品视频| 久国内精品在线| 97视频在线观看免费高清完整版在线观看| 日韩精品福利网站| 一区二区三区视频观看| 亚洲美女视频网| 国产精品女人久久久久久| 久久视频在线播放| 色婷婷av一区二区三区久久| 91av视频在线观看| 日本19禁啪啪免费观看www| 欧美性猛交xxxxx水多| 国产精品美女在线观看| 国产精品亚洲网站| 亚洲天堂一区二区三区| 亚洲国产美女精品久久久久∴| 国产精品成人va在线观看| 亚洲精品一区二区三区婷婷月| 中文字幕国产日韩| 国产999精品久久久影片官网| 91麻豆国产精品| 亚洲欧美日本另类| 91精品国产高清自在线| 精品日韩美女的视频高清| 欧美性猛交丰臀xxxxx网站| 久久久久久噜噜噜久久久精品| 欧美在线亚洲一区| 久久精品电影一区二区| 97视频在线看| 亚洲综合国产精品| 色综合导航网站| 成人乱人伦精品视频在线观看| 欧美成人四级hd版| 久久久精品一区二区| 久久久久久久国产精品视频| 欧美专区日韩视频| 亚洲精品中文字幕有码专区| 国产精品情侣自拍| 国产脚交av在线一区二区| 在线观看不卡av| 亚洲欧洲在线视频| 91免费精品视频| 精品国产91乱高清在线观看| 色综合视频一区中文字幕| 成人免费福利视频| 国产精品第一视频| 欧美成人三级视频网站| 国产97在线|亚洲| 久久综合五月天| 久久人人爽国产| 日韩一区二区精品视频| 一本色道久久综合狠狠躁篇怎么玩| 在线日韩av观看| 欧美激情日韩图片| 久久成人人人人精品欧| 国产精品香蕉av| 青青草原一区二区| 日韩国产欧美精品在线| 欧美精品国产精品日韩精品| 国产一区二区黑人欧美xxxx| 久久精品国产清自在天天线| 精品久久久久久久久中文字幕| 国产精品专区h在线观看| 日韩美女毛茸茸| 精品精品国产国产自在线| 亚洲国语精品自产拍在线观看| 2018日韩中文字幕| 日本一区二区三区四区视频| 插插插亚洲综合网| 精品欧美国产一区二区三区| 日本道色综合久久影院| 欧美大胆在线视频| 国产不卡精品视男人的天堂| 久久天天躁狠狠躁老女人| 国产精品久久婷婷六月丁香| 中文字幕成人精品久久不卡| 亚洲综合视频1区| 69av视频在线播放| 一区二区三区视频免费在线观看| 亚洲bt天天射| 国产97人人超碰caoprom| 日本久久久久亚洲中字幕| 91午夜理伦私人影院| 91精品成人久久| 日韩av高清不卡| 国产精品第2页| 中文字幕在线视频日韩| 欧美资源在线观看| 91在线精品播放| 国产午夜精品美女视频明星a级| 久久久免费精品视频| 欧美在线视频观看免费网站| 精品一区二区三区三区| 日本午夜人人精品| www.久久撸.com| 亚洲www在线| 国产精品视频999| xvideos亚洲| 欧美日韩免费区域视频在线观看|