




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、oracle存儲(chǔ)過程存儲(chǔ)過程 培訓(xùn)材料培訓(xùn)材料版權(quán)所有, 2009 CYTS Sysnet Electronics CO., LTD壽險(xiǎn)二部帥曉鋒存儲(chǔ)過程存儲(chǔ)過程的建立存儲(chǔ)過程的語(yǔ)法結(jié)構(gòu)存儲(chǔ)過程的控制語(yǔ)句存儲(chǔ)過程的開發(fā)存儲(chǔ)過程的運(yùn)行存儲(chǔ)過程的調(diào)試Informix與oracle存儲(chǔ)過程的差異函數(shù)包2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程的編寫編寫后綴名為sql的文件,一個(gè)存儲(chǔ)過程一個(gè)文件。過程格式:CREATE OR REPLACE PROCEDURE 存儲(chǔ)過程名字 ( 參數(shù)1 IN NUMBER, 參數(shù)2 IN NUMBER ) IS 變量1 INTEGER :=0; 變量2 DATE;
2、BEGIN END 存儲(chǔ)過程名字;2009/07/09尚洋信德存儲(chǔ)過程創(chuàng)建一個(gè)簡(jiǎn)單存儲(chǔ)過程的方式1、1.從Window打開SQL*Plus并且從SQL*Plus登錄到你的數(shù)據(jù)庫(kù);打開skeleton.sql文件. 2.在SQL命令提示符下輸入以下命令: SQLskeleton 注釋:(SQL*Plus裝載skeleton.sql文件的內(nèi)容到SQL*Plus緩沖區(qū), 并且執(zhí)行SQL*Plus語(yǔ)句;SQL*Plus會(huì)通知你存儲(chǔ)過程已經(jīng)被成功地創(chuàng)建)3.寫一個(gè)存儲(chǔ)過程,實(shí)例: CREATE OR REPLACE PROCEDURE skeleton IS BEGIN DBMS_OUTPUT.PUT_
3、LINE(HelloWorld!); END;2009/07/09尚洋信德存儲(chǔ)過程運(yùn)行查看信息1.SQLEXECUTE skeleton; 注釋(SQL*Plus輸出一下信息確信存儲(chǔ)過程成功執(zhí) 即PL/SQLproceduresuccessfullycompleted). 2.在SQL*Plus命令行提示符,鍵入: SQLSET SERVEROUTPUT ON 再次敲入SQLEXECUTE skeleton即可. 注釋: 查看存儲(chǔ)過程中的打印語(yǔ)句信息,實(shí)行以上命令. 2009/07/09尚洋信德存儲(chǔ)過程刪除一個(gè)存儲(chǔ)過程1.在SQL命令提示符下輸入以下命令: 命令 : SQLDROP PROCE
4、DURE 存儲(chǔ)過程名;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程的注釋- 注釋一行2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程入?yún)⑴c返回值 create or replace procedure runbyparmeters (isal in emp.sal%type, sname out varchar, sjob in out varchar) as icount number; begin if icount=1 then . else . end if; end; 2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程變量定義、常用變量類型realsal emp.sal%type; realn
5、ame varchar2(40); realjob varchar2(40); Price number(5,2);Product_id interger;注釋 : 同一存儲(chǔ)過程中,變量名最好不要重復(fù)。2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程賦值語(yǔ)句:=realjob := work ;Product_id := 100001 ;realname := Brunhilda;Price := 3.1415;this_day := TODAY;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程變量先聲明且必須聲明才能使用。Begin end 塊外聲明的變量影響全局。Begin end 塊內(nèi)聲明的變量
6、影響本Begin end 。變量聲明必須在存儲(chǔ)過程開頭或者Begin end 塊的開頭部分。2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程操作符+-*/| 合并 如:sp_str1=“ASD”|”ERT” ,則: sp_str1=“ASDERT” 2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程異??刂芿xception when too_many_rows then DBMS_OUTPUT.PUT_LINE(返回值多于1行); when others then DBMS_OUTPUT.PUT_LINE(在RUNBYPARMETERS過程中出錯(cuò)!);2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程結(jié)構(gòu)塊
7、BEGIN 第一步處理;END;BEGIN 第二步處理;END;BEGIN 第三步處理;END; 注釋: 存儲(chǔ)過程BEGIN END 之間可以進(jìn)行嵌套。2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程游標(biāo)1.帶參數(shù)的游標(biāo)CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID = C_ID NUMBER; OPEN C_USER(變量值); LOOP FETCH C_USER INTO V_NAME; EXIT WHEN C_USER%NOTFOUND; END LOOP; CLOSE C_USER;2009/07/09尚洋信
8、德存儲(chǔ)過程2.不帶參數(shù)的游標(biāo)CURSOR C_USER IS SELECT NAME FROM USER WHERE TYPEID = C_ID; OPEN C_USER; LOOP FETCH C_USER INTO V_NAME; EXIT WHEN C_USER%NOTFOUND; END LOOP; CLOSE C_USER;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程LOOP循環(huán) Counter :=0; LOOP counter :=counter +1 ; EXIT WHEN counter =5; END LOOP;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程for循環(huán)1.方式
9、一:BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 ;END; END LOOP; END;2009/07/09尚洋信德存儲(chǔ)過程2.方式二:BEGIN FOR cur_result REVERSE 1.5 LOOP BEGIN DBMS_OUTPUT.PUT_LINE(cur_result );END; END LOOP; END;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程while循環(huán)Counter :=0; WHILE counter str2 thenresult :=1;ELSI
10、F str2 str1 THENresult := -1;ELSEresult := 0;END IF;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程if條件表達(dá)式比較符 =!=AND OR NOT(NOT) BETWEEN AND (NOT) IN ( , , , ,)IS (NOT) NULL(NOT) LIKE2009/07/09尚洋信德存儲(chǔ)過程 %type定義方法1. 在pl/sql中可以將變量和常量聲明為內(nèi)建或用戶定義的數(shù)據(jù)類型,以引用一個(gè)列名,同時(shí)繼承他的數(shù)據(jù)類型和大小. 注釋: v_a number(5):=10; v_b v_a%type:=15; v_c v_a%type;20
11、09/07/09尚洋信德存儲(chǔ)過程游標(biāo)屬性1.orcale 在對(duì)DML操作時(shí)會(huì)產(chǎn)生隱式游標(biāo).2.DML是指:insert、update、delete, select 的操作.3.隱式游標(biāo)只使用sql%found, sql%notfound, sql%rowcount三個(gè)屬性.4.sql%found,sql%notfound是布爾值,sql%rowcount是整數(shù)值。5. sql%found為 true, sql%notfound為 false.6. sql%rowcount是返回當(dāng)前位置為止游標(biāo)讀取的記錄行數(shù).7.在執(zhí)行任何DML語(yǔ)句之前, sql%found,sql%notfound,sql%
12、rowcount的 值都是null. 2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程控制語(yǔ)句的跳出 exit when eixt 注釋: exit 語(yǔ)句可立即結(jié)束循環(huán) exit when 語(yǔ)句是在指定條件下結(jié)束循環(huán),并且可以 出現(xiàn)在循環(huán)代碼中的任何位置. 2009/07/09尚洋信德存儲(chǔ)過程游標(biāo)的使用1. loop 循環(huán).create or replace procedure dept_procedure(a in varchar2,v_a out dept%rowtype)is-聲明游標(biāo)cursor c_de(a in varchar2)is select tid from dept wher
13、e dname=a;begin-打開游標(biāo),對(duì)其中找到的記錄進(jìn)行遍歷2009/07/09尚洋信德存儲(chǔ)過程open c_de(a);Loopfetch c_de into v_a;exit when c_de%notfound; / (exit when語(yǔ)句一定要緊跟在fetch之后。必避免多余的數(shù)據(jù)處理。) dbms_output.put_line(deptno:|v_a.deptno);dbms_output.put_line(dname:|v_a.dname);dbms_output.put_line(loc:|v_a.loc);end loop;close c_de;end;2009/07
14、/09尚洋信德存儲(chǔ)過程游標(biāo)的使用2. for 循環(huán).CURSOR cur_test ISSELECT p_number,p_name,p_manager,p_client FROM project WHERE p_name LIKE S% ; BEGIN INSERT INTO project VALUES (v_number,v_name,v_manager,v_client); FOR rec IN cur_test LOOP DBMS_OUTPUT.put_line(rec.p_number); DBMS_OUTPUT.put_line(rec.p_name); DBMS_OUTPUT.
15、put_line(rec.p_manager); DBMS_OUTPUT.put_line(rec.p_client); END LOOP; END; 2009/07/09尚洋信德存儲(chǔ)過程游標(biāo)的使用3. while 循環(huán).cursor c_postype(a in varchar2)is select bid ,bidname from dept where dname=a;open c_postype(a);begin fetch c_postype into v_postype,v_description; while c_postype%found loop fetch c_postyp
16、e into v_postype,v_description ; end loop;close c_postype;end;2009/07/09尚洋信德存儲(chǔ)過程儲(chǔ)存過程嵌套create or replace procedure innerBlock(p1 in varchar2) as o1 varchar2(10) := out1;inner1 varchar2(20); Begindbms_output.put_line(); begin inner1 :=inner1; exception when others then null; end; end; 2009/07/09尚洋信德存儲(chǔ)
17、過程儲(chǔ)存過程中建表 create or replace procedure skeleton as begin execute immediate create table table1(id number,name varchar2(20); End ;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程的返回值 Oracle 存儲(chǔ)過程的返回值,必須在創(chuàng)建一個(gè)存儲(chǔ)過程時(shí)定義返回值.2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程的執(zhí)行 Execute xxx; Execute xxx(值1,值2); Call xxx(值1,值2,值3); Select xxx(值1) from dual; 注釋: Se
18、lect xxx(值1) from dual 用法一般只在函數(shù)及包代碼中用到. 2009/07/09尚洋信德存儲(chǔ)過程常用存儲(chǔ)過程介紹Spcmpdaysum(sp_statdate,26)Spcmpmonthsum(sp_statdate)Spfnul2zero2009/07/09尚洋信德存儲(chǔ)過程開發(fā)一個(gè)存儲(chǔ)過程1.不帶參數(shù)的儲(chǔ)存過程create or replace procedure runbyparmeters begin if icount=1 then . else . end if; exception /存儲(chǔ)過程異常 when too_many_rows then DBMS_OUT
19、PUT.PUT_LINE(返回值多于1行); when others then DBMS_OUTPUT.PUT_LINE(在RUNBYPARMETERS過程中出錯(cuò)!); end;2009/07/09尚洋信德存儲(chǔ)過程開發(fā)一個(gè)存儲(chǔ)過程 注釋:如果沒有or replace語(yǔ)句,則僅僅是新建一個(gè)存儲(chǔ)過程,如果系統(tǒng)存在該存儲(chǔ)過程,則會(huì)報(bào)錯(cuò)。Create or replace procedure 如果系統(tǒng)中沒有此存儲(chǔ)過程就新建一個(gè),如果系統(tǒng)中有此存儲(chǔ)過程則把原來刪除掉,重新創(chuàng)建一個(gè)存儲(chǔ)過程.存儲(chǔ)過程名定義:包括存儲(chǔ)過程名和參數(shù)列表,參數(shù)名和參數(shù)類型,參數(shù)名不能重復(fù).as (is )為關(guān)鍵字,可以理解為pl
20、/sql的declare關(guān)鍵字,用于聲明變量.2009/07/09尚洋信德存儲(chǔ)過程開發(fā)一個(gè)存儲(chǔ)過程2.帶參數(shù)的儲(chǔ)存過程create or replace procedure runbyparmeters(isal in emp.sal%type, sname out varchar, sjob in out varchar) as icount number; begin select count(*) into icount from emp where salisal and job=sjob; if icount=1 then else end if; exception /存儲(chǔ)過程異常
21、 when too_many_rows then DBMS_OUTPUT.PUT_LINE(返回值多于1行); when others then DBMS_OUTPUT.PUT_LINE(在RUNBYPARMETERS過程中出錯(cuò)!); end;2009/07/09尚洋信德存儲(chǔ)過程開發(fā)一個(gè)存儲(chǔ)過程注釋:sal%type目的是為了保持與傳參過來的數(shù)據(jù)寬度一致.IN /OUT 即可作輸入?yún)?shù),也可作輸出參數(shù)。變量聲明塊:緊跟著的as (is )關(guān)鍵字,用于聲明變量。IN 按值傳遞,并且它不允許在存儲(chǔ)過程中被重新賦值。如果存儲(chǔ)過程的參數(shù)沒有指定存參數(shù)傳遞類型,默認(rèn)為IN.OUT 參數(shù):作為輸出參數(shù),需
22、要注意,當(dāng)一個(gè)參數(shù)被指定為OUT類型時(shí),就算在調(diào)用存儲(chǔ)過程之前對(duì)該參數(shù)進(jìn)行了賦值,在存儲(chǔ)過程中該參數(shù)的值仍然是null.IN參數(shù)的寬度是由外部決定,對(duì)于OUT 和IN OUT 參數(shù)的寬度是由存儲(chǔ)過程內(nèi)部決定。2009/07/09尚洋信德存儲(chǔ)過程開發(fā)一個(gè)存儲(chǔ)過程3.參數(shù)的存儲(chǔ)過程默認(rèn)值create or replace procedure procdefault(p1 varchar2, p2 varchar2 default mark) as begin dbms_output.put_line(p2); end; SQL exec procdefault(a); 或者SQL exec pro
23、cdefault2(p2 =aa);注釋: 1.可以通過default 關(guān)鍵字為存儲(chǔ)過程的參數(shù)指定默認(rèn)值。在對(duì)存儲(chǔ)過程調(diào)用時(shí),就可以省略默認(rèn)值。 2. 默認(rèn)值僅僅支持IN傳輸類型的參數(shù)。OUT 和 IN OUT不能指定默認(rèn)值2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程調(diào)用方式 1.方式一:Declare realsal emp.sal%type; realname varchar(40); realjob varchar(40); BEGIN realsal:=1100; realname:=; realjob:=CLERK; runbyparmeters(realsal,realname,r
24、ealjob); 必須按順序 DBMS_OUTPUT.PUT_LINE(REALNAME| |REALJOB); (輸出模式)END;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程調(diào)用方式2. 方式二:declare realsal emp.sal%type; realname varchar(40); realjob varchar(40); begin realsal:=1100; realname:=; realjob:=CLERK; runbyparmeters(sname=realname,isal=realsal,sjob=realjob); -指定值對(duì)應(yīng)變量順序可變 DBMS_OU
25、TPUT.PUT_LINE(REALNAME| |REALJOB);(輸出模式)END; 2009/07/09尚洋信德存儲(chǔ)過程儲(chǔ)存過程調(diào)試declare param_out varchar2(28); param_inout varchar2(28); begin param_inout:=ff; proce_test(dd,param_out,param_inout); dbms_output.put_line(param_out); end; 注釋: 存儲(chǔ)過程調(diào)試主要根據(jù)開發(fā)者自己的決定,一般情況下通過打印語(yǔ)句來完成, 這里就不詳細(xì)說明.2009/07/09尚洋信德存儲(chǔ)過程系統(tǒng)異常錯(cuò)誤信息
26、ACCESS_INTO_NULL 試圖給為初始化對(duì)象的屬性賦值 CASE_NOT_FOUND CASE 中若未包含相應(yīng)的 WHEN ,并且沒有設(shè)置 COLLECTION_IS_NULL 試圖向?yàn)槌跏蓟那短妆砗妥冮L(zhǎng)數(shù)組賦值時(shí),引發(fā)異常CURSER_ALREADY_OPEN 試圖打開一個(gè)已經(jīng)打開的游標(biāo)時(shí)產(chǎn)生異常DUP_VAL_ON_INDEX 唯一索引對(duì)應(yīng)的列上有重復(fù)的值 INVALID_CURSOR 在不合法的游標(biāo)上進(jìn)行操作 INVALID_NUMBER 內(nèi)嵌的 SQL 語(yǔ)句不能將字符轉(zhuǎn)換為數(shù)字 NO_DATA_FOUND 使用 select into 未返回行,或企圖在表中訪問為初始化的數(shù)據(jù)
27、 TOO_MANY_ROWS 執(zhí)行 select into 時(shí),結(jié)果集超過一行 ZERO_DIVIDE 試圖用0 除某個(gè)數(shù)字SUBSCRIPT_BEYOND_COUNT 元素下標(biāo)超過嵌套表或 VARRAY 的最大值 SUBSCRIPT_OUTSIDE_LIMIT 試圖使用嵌套表或 VARRAY 時(shí),將下標(biāo)指定為負(fù)數(shù) 2009/07/09尚洋信德存儲(chǔ)過程系統(tǒng)異常錯(cuò)誤信息VALUE_ERROR 發(fā)生算術(shù),轉(zhuǎn)換,截?cái)嗷虼笮〖s束錯(cuò)誤.LOGIN_DENIED PL/SQL 應(yīng)用程序連接到 oracle 數(shù)據(jù)庫(kù)時(shí),提供了不正確的用戶名 或密碼 NOT_LOGGED_ON PL/SQL 應(yīng)用程序在試圖連接
28、數(shù)據(jù)庫(kù)之前訪問數(shù)據(jù)庫(kù)中的數(shù)據(jù)PROGRAM_ERROR PL/SQL 內(nèi)部問題,可能需要重裝數(shù)據(jù)字典pl./SQL 系統(tǒng)包 ROWTYPE_MISMATCH 宿主游標(biāo)變量與 PL/SQL 游標(biāo)變量的返回類型不兼容 SELF_IS_NULL 使用對(duì)象類型時(shí),在 null 對(duì)象上調(diào)用對(duì)象方法 STORAGE_ERROR 運(yùn)行 PL/SQL 時(shí),內(nèi)存用盡或者內(nèi)存出現(xiàn)問題SYS_INVALID_ID 無效的 ROWID 字符串 TIMEOUT_ON_RESOURCE 當(dāng)數(shù)據(jù)庫(kù)等待某資源時(shí)超時(shí) 2009/07/09尚洋信德存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別1.建立存儲(chǔ)過
29、程的語(yǔ)法Oracle:create or replace procedure procedue_name (arg1 in | out | in out type(argn in | out | in out type,) is | as 變量定義區(qū) begin end procedure_name;Informix:create procedure proc_name( .in_parameter_list)returning out_para_list / out_result_set;2009/07/09尚洋信德存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別2.沒有
30、參數(shù)也沒有返回值Oracle:create or replace procedure pNoParam as begin delete from t1; commit; end; end pNoParam;Informix: 2009/07/09尚洋信德存儲(chǔ)過程create procedure pNoParam()Returning int begin on exception rollback work;end exception begin work; delete from t1;commit work; return; end; end procedure;2009/07/09尚洋信德
31、存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別3.返回記錄集Oracle: procedure pReturnSet (RefCursor out varchar2, Refdefine out varchar2) as localCursor TestRefCursorTyp; localnumber TestRefCursorTyp; begin select f1, f2 into localCursor , localnumber from t1; RefCursor := localCursor; Refdefine := localnumber;end pRe
32、turnSet; 2009/07/09尚洋信德存儲(chǔ)過程Informix:create procedure pReturnSet() returning integer; define i integer; define j varchar(10); beginforeach select f1, f2 into i, j from t1 end foreach; return i, j; End ;end procedure;2009/07/09尚洋信德存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別4.錯(cuò)誤捕捉Oracle:Exceptionwhen others the
33、nDBMS_OUTPUT.PUT_LINE(在XX過程中出錯(cuò)!);Informix:ON EXCEPTION SET sp_errsql, sp_errisam, sp_errstr IF (sp_errsql!=0) THEN RAISE EXCEPTION -746,sp_errisam,錯(cuò)誤碼:|sp_errsql|; END IF; END EXCEPTION;2009/07/09尚洋信德存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別5.對(duì)游標(biāo)的處理Oracle:create or replace procedure pHasCursor as v_f1 numb
34、er(10,0); cursor curt1 is select f1 from t1 for update ; begin open curt1; loop fetch curt1 Into v_f1; exit when curt1%notfound; end loop; Close curt1;End;2009/07/09尚洋信德存儲(chǔ)過程Informix:create procedure pHasCursor() define v_f1 integer; begin foreach select f1 into v_f1 from t1 - 注意這里沒有分號(hào) if (v_f1 = 1)
35、then update t1 set f2 = one where f3=1001; end if; end foreach;End ;End pHasCursor;2009/07/09尚洋信德存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別6.打印調(diào)試信息的處理打印調(diào)試信息的處理Oracle: DBMS_OUTPUT.PUT_LINE(開始執(zhí)行存儲(chǔ)過程開始執(zhí)行存儲(chǔ)過程); DBMS_OUTPUT.PUT_LINE(v_date=|v_date); DBMS_OUTPUT.PUT_LINE(存儲(chǔ)過程執(zhí)行完畢存儲(chǔ)過程執(zhí)行完畢); Informix:set debug file
36、 to trace_check; - with append; 說明說明“with append”表示以追加模式打開跟蹤結(jié)果文表示以追加模式打開跟蹤結(jié)果文trace 開始執(zhí)行存儲(chǔ)過程開始執(zhí)行存儲(chǔ)過程 trace v_date=|v_date; trace 存儲(chǔ)過程執(zhí)行完畢存儲(chǔ)過程執(zhí)行完畢 trace off;2009/07/09尚洋信德存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別7.關(guān)于參數(shù)的說明 注釋: 如果存儲(chǔ)過程想返回一個(gè)參數(shù),在informix中是通過返回值的形式實(shí)現(xiàn)的,而在oracle是通過輸出參數(shù)或者輸入輸出參數(shù)實(shí)現(xiàn)的.Oracle:create or re
37、place procedure p1(x out number) as begin x := 0; end p1;Informix:create procedure p1() returning integer; return 0;2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別8.存儲(chǔ)過程中調(diào)用另一個(gè)存儲(chǔ)過程Oracle: Call pNoParam; Call pNormalParam(1, a, v_Result); Informix:spNoParam()pNormalParam(1, a) returning v_Result;
38、2009/07/09尚洋信德存儲(chǔ)過程存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別9.if 使用Oracle:IF str1 str2 thenresult :=1;ELSIF str2 str1 THENresult := -1;ELSEresult := 0;END IFInformix:2009/07/09尚洋信德存儲(chǔ)過程 IF str1 str2 thenresult =1;ELIF str2 str1 THENresult = -1;ELSEresult = 0;END IF2009/07/09尚洋信德存儲(chǔ)過程ORACLE 和和informix 存儲(chǔ)過程區(qū)別存儲(chǔ)過程區(qū)別10.賦值 Oracle: v_1 := 100; Informix: let v_1 = 100;2009/07/09尚洋信德存儲(chǔ)過程練習(xí)創(chuàng)建一個(gè)存儲(chǔ)過程, 使用游標(biāo)從dept表中取BID為010開頭的記錄信息, 把它往表t01_psn中插入一條記錄,并且循環(huán)打印插入的數(shù)據(jù)記錄.2009/07/09尚洋信德函數(shù)1. 函數(shù)結(jié)構(gòu) CREATE OR REPLACE FUNCTION 函數(shù)名(參數(shù)1 IN NUMBER, 參數(shù)2 IN NUMBER )RETURN 類型 IS | ASBEGIN FUNCTION _BODYEND函數(shù)名; 注釋: 函數(shù)與存儲(chǔ)過程相似,唯一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司聯(lián)誼現(xiàn)場(chǎng)活動(dòng)方案
- 公司擺攤美食活動(dòng)方案
- 公司自制活動(dòng)策劃方案
- 公司男女活動(dòng)策劃方案
- 公司春季燒烤活動(dòng)方案
- 公司旅游活動(dòng)策劃方案
- 公司組員聚會(huì)活動(dòng)方案
- 公司洞頭團(tuán)建活動(dòng)方案
- 公司聚餐系列活動(dòng)方案
- 公司組織撕名牌活動(dòng)方案
- 信息技術(shù)的前沿動(dòng)態(tài)的試題及答案
- 參股投資合作協(xié)議書
- 2025年廣東省深圳市南山區(qū)多校聯(lián)考中考英語(yǔ)二模試卷
- 2025至2030中國(guó)物理氣相沉積(PVD)設(shè)備行業(yè)行情監(jiān)測(cè)與發(fā)展動(dòng)向追蹤報(bào)告
- 智能化設(shè)備與造價(jià)咨詢合同
- 工程造價(jià)審計(jì)服務(wù)投標(biāo)方案(技術(shù)方案)
- 安全生產(chǎn)檢查咨詢服務(wù)投標(biāo)方案(技術(shù)方案)
- 2025綠色建筑檢驗(yàn)機(jī)構(gòu)能力驗(yàn)證要求
- 全省工會(huì)系統(tǒng)經(jīng)審業(yè)務(wù)技能大賽含答案
- 工程利潤(rùn)分紅協(xié)議書
- 2025年上海市安全員C3證(專職安全員-綜合類)考試題庫(kù)
評(píng)論
0/150
提交評(píng)論