麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

ORACLE存儲(chǔ)過(guò)程簡(jiǎn)明教程

2024-08-29 13:58:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
ORACLE存儲(chǔ)過(guò)程簡(jiǎn)明教程


本教程為我參考文檔結(jié)合實(shí)踐所寫,原創(chuàng)。




26.1 創(chuàng)建做試驗(yàn)的表及數(shù)據(jù)

create table emp_ly as

select * from emp;

說(shuō)明:注意復(fù)制表結(jié)構(gòu)及數(shù)據(jù)不是sql server里面的語(yǔ)法select * into emp_ly from emp,這在oracle里面行不通,當(dāng)然如果僅復(fù)制結(jié)構(gòu)的話使用

create table emp_ly as

select * from emp

where 1<>1;

即可。

26.2創(chuàng)建一個(gè)存儲(chǔ)過(guò)程用來(lái)做試驗(yàn)

create or replace procedure Sal_raise(emp_no number,shuliang number)

as

begin

update emp_ly set sal=sal + shuliang where empno=emp_no;

end;

/

說(shuō)明:一定不能少begin end;這兩個(gè)關(guān)鍵字,不然創(chuàng)建存儲(chǔ)過(guò)程會(huì)有提示

Warning: Procedure created with compilation errors

意思是:警告,存儲(chǔ)過(guò)程雖然創(chuàng)建了,但是有編譯錯(cuò)誤。

查看運(yùn)行錯(cuò)誤可以輸入 SHOW ERRORS;

存儲(chǔ)過(guò)程的聲明參數(shù)類型時(shí)不能帶長(zhǎng)度,精度或者范圍,比如這個(gè)存儲(chǔ)過(guò)程emp_no number這個(gè)參數(shù),就不能聲明為emp_no number(4),同理,varchar2作為參數(shù)的類型是可以的,但是以varchar2(10)作為參數(shù)類型是不行的。

在sql plus里面創(chuàng)建存儲(chǔ)過(guò)程,最后一個(gè)反斜線不能少,這是告訴編譯器運(yùn)行這個(gè)PL/SQL塊,但是在pl/sql developer的SQL Window創(chuàng)建則不需要這個(gè)反斜線,選擇輸入的代碼按F8鍵執(zhí)行即可,缺點(diǎn)是編譯出錯(cuò)不會(huì)提示。

26.3 調(diào)用存儲(chǔ)過(guò)程

A.在存儲(chǔ)過(guò)程或者觸發(fā)器中調(diào)用存儲(chǔ)過(guò)程

使用存儲(chǔ)過(guò)程名和參數(shù)即可,比如Sal_raise(7369,200);



B. 從交互式oracle工具中調(diào)用存儲(chǔ)過(guò)程

在sql plus中調(diào)用,可以使用匿名塊的方式調(diào)用,如

begin

Sal_raise(7369,200);

end;

/

還可以使用EXECUTE或者CALL的語(yǔ)法調(diào)用,如

execute Sal_raise(7369,200);

call Sal_raise(7369,200);



值得注意的是,在sql plus中執(zhí)行完了,如果沒(méi)有輸入明確的commit;命令數(shù)據(jù)是不會(huì)實(shí)際寫到表的,但是在SQL Window窗口中只能通過(guò)

begin

Sal_raise(emp_no=>7369,shuliang=>200);

end;

方式調(diào)用存儲(chǔ)過(guò)程,而且執(zhí)行結(jié)果不需要輸入commit;命令也會(huì)直接寫入表。



26.4傳入存儲(chǔ)過(guò)程參數(shù)的三種方法:

Execute Sal_raise(7369,200);  

Execute Sal_raise(shuliang=>200, emp_no=>7369);

execute Sal_raise(7369,shuliang=>200);

第一種為常用方法,傳入?yún)?shù)順序和存儲(chǔ)過(guò)程聲明參數(shù)順序一樣

第二種為參數(shù)名稱和參數(shù)值一一對(duì)應(yīng)法,可以不按照存儲(chǔ)過(guò)程聲明參數(shù)順序傳入。

第三種為混合法,要求沒(méi)有參數(shù)名稱的值要寫在前面,還需要按照聲明參數(shù)的順序才行,比如execute sal_raise(200,emp_no=>7369);就是不行的。



26.5 查看存儲(chǔ)過(guò)程代碼

如果查看存儲(chǔ)過(guò)程的所有者,創(chuàng)建時(shí)間,是否有效等信息可以使用如下語(yǔ)句:

select * from all_objects where object_name='SAL_RAISE';

如果要查看存儲(chǔ)過(guò)程的代碼,則可以使用如下代碼:

select text from all_source where name='SAL_RAISE' order by line;

請(qǐng)一定注意的是:上面著兩個(gè)sql要有記錄返回,一定要將存儲(chǔ)過(guò)程的名字全部用大寫,否則會(huì)沒(méi)有記錄返回。



26.6 帶輸出參數(shù)的存儲(chǔ)過(guò)程

稍微改造下成為帶輸出參數(shù)的存儲(chǔ)過(guò)程:

create or replace procedure Sal_raise(emp_no number,shuliang number,sal_now out number)

as

begin

update emp_ly set sal=sal + shuliang where empno=emp_no;

select sal into sal_now from emp_ly where empno=emp_no;

end;



調(diào)用方法和不帶輸出參數(shù)的存儲(chǔ)過(guò)程差不多,只不過(guò)需要聲明一個(gè)合適類型的變量來(lái)接收輸出參數(shù)而已。

set serveroutput on; --主要用于后面的DBMS_OUTPUT要顯示結(jié)果

declare sal_now number;

begin

Sal_raise(7369,200,sal_now);

DBMS_OUTPUT.PUT_LINE(TO_CHAR(sal_now));

end;



26.5 刪除存儲(chǔ)過(guò)程

DROP PROCEDURE Sal_raise

參考文檔:

1. Application Developer’s Guide – FundamentalsSQL Reference

2.SQL Reference
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色一级片免费观看 | 色播视频网站 | 香蕉国产片 | 国产xxxxx在线观看 | 性欧美xxxx免费岛国不卡电影 | 欧美日韩亚洲在线观看 | 免费视频xxxx | 成人精品一区二区 | www.91成人 | 午夜视频在线观看91 | 黄色视屏免费看 | 91成人在线免费观看 | 黄视频网站免费在线观看 | 亚洲国产精品久久久久婷婷老年 | 欧美性生活网站 | 国产无遮挡一区二区三区毛片日本 | 高清成人在线 | 成人福利在线看 | 爱爱插插视频 | 国产在线精品一区二区不卡 | 精品一区二区久久久久久按摩 | 久久美女免费视频 | 欧美成人一级 | 久久99国产精品久久99 | 欧美日韩在线播放 | 九九看片 | 香蕉久草视频 | 黄色一级视频 | 久久久国产视频 | 最新av免费网址 | 1314成人网| 一级做受毛片免费大片 | gogo全球大胆高清人露出91 | 一区二区三区在线播放视频 | www.xxx视频| 欧美色大成网站www永久男同 | 久久影院免费观看 | 欧美h版电影在线观看 | av电影在线免费 | 久草在线最新免费 | 激情视频导航 |