亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 第十一章 本地動(dòng)態(tài)sql - pl-sql用戶指南與參考 - whatiswhat.htm

?? sql初學(xué)者不錯(cuò)的教程
?? HTM
?? 第 1 頁 / 共 5 頁
字號(hào):
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;dynamic_string<BR>[<STRONG>INTO</STRONG>&nbsp;{define_variable[,&nbsp;define_variable]...&nbsp;|&nbsp;record}]<BR>[USING&nbsp;[<STRONG>IN</STRONG>&nbsp;|&nbsp;<STRONG>OUT</STRONG>&nbsp;|&nbsp;<STRONG>IN</STRONG>&nbsp;<STRONG>OUT</STRONG>]&nbsp;bind_argument<BR>&nbsp;&nbsp;&nbsp;&nbsp;[,&nbsp;[<STRONG>IN</STRONG>&nbsp;|&nbsp;<STRONG>OUT</STRONG>&nbsp;|&nbsp;<STRONG>IN</STRONG>&nbsp;<STRONG>OUT</STRONG>]&nbsp;bind_argument]...]<BR>[{RETURNING&nbsp;|&nbsp;<STRONG>RETURN</STRONG>}&nbsp;<STRONG>INTO</STRONG>&nbsp;bind_argument[,&nbsp;bind_argument]...]; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P>dynamic_string是代表一條SQL語句或一個(gè)PL/SQL塊的字符串表達(dá)式,define_variable是用于存放被選出的字段值的變量,record是用戶定義或%ROWTYPE類型的記錄,用來存放被選出的行記錄。輸入bind_argument參數(shù)是一個(gè)表達(dá)式,它的值將被傳入(IN模式)或傳出(OUT模式)或先傳入再傳出(IN 
                        OUT模式)到動(dòng)態(tài)SQL語句或是PL/SQL塊中。一個(gè)輸出bind_argument參數(shù)就是一個(gè)能保存動(dòng)態(tài)SQL返回值的變量。</P>
                        <P>除了多行查詢外,動(dòng)態(tài)字符串可以包含任何SQL語句(不含終結(jié)符)或PL/SQL塊(含終結(jié)符)。字符串中可以包括用于參數(shù)綁定的占位符。但是,不可以使用綁定參數(shù)為動(dòng)態(tài)SQL傳遞模式對(duì)象。 
                        </P>
                        <P>在用于單行查詢時(shí),INTO子句要指明用于存放檢索值的變量或記錄。對(duì)于查詢檢索出來的每一個(gè)值,INTO子句中都必須有一個(gè)與之對(duì)應(yīng)的、類型兼容的變量或字段。在用于DML操作時(shí),RETURNING 
                        INTO子句要指明用于存放返回值的變量或記錄。對(duì)于DML語句返回的每一個(gè)值,INTO子句中都必須有一個(gè)與之對(duì)應(yīng)的、類型兼容的變量或字段。 
                        </P>
                        <P>我們可以把所有的綁定參數(shù)放到USING子句中。默認(rèn)的參數(shù)模式是IN。對(duì)于含有RETURNING子句的DML語句來說,我們可以把OUT參數(shù)放到RETURNING 
                        INTO之后,并且不用指定它們的參數(shù)模式,因?yàn)槟J(rèn)就是OUT。如果我們既使用了USING又使用RETURNING 
                        INTO,那么,USING子句中就只能包含IN模式的參數(shù)了。 </P>
                        <P>運(yùn)行時(shí),動(dòng)態(tài)字符串中的綁定參數(shù)會(huì)替換相對(duì)應(yīng)的占位符。所以,每個(gè)占位符必須與USING子句和/或RETURNING 
                        INTO子句中的一個(gè)綁定參數(shù)對(duì)應(yīng)。我們可以使用數(shù)字、字符和字符串作為綁定參數(shù),但不能使用布爾類型(TRUE,F(xiàn)ALSE和NULL)。要把空值傳遞給動(dòng)態(tài)字符串,我們就必須使用工作區(qū)。 
                        </P>
                        <P>動(dòng)態(tài)SQL支持所有的SQL類型。所以,定義變量和綁定變量都可以是集合、LOB,對(duì)象類型實(shí)例和引用。作為一項(xiàng)規(guī)則,動(dòng)態(tài)SQL是不支持PL/SQL特有的類型的。這樣,它就不能使用布爾型或索引表。 
                        </P>
                        <P>我們可以重復(fù)為綁定變量指定新值執(zhí)行動(dòng)態(tài)SQL語句。但是,每次都會(huì)消耗很多資源,因?yàn)镋XECUTE 
                        IMMEDIATE在每次執(zhí)行之前都需要對(duì)動(dòng)態(tài)字符串進(jìn)行預(yù)處理。 </P>
                        <P class=title2>1、動(dòng)態(tài)SQL實(shí)例</P>
                        <P>下面的PL/SQL塊包含了幾個(gè)動(dòng)態(tài)SQL的例子: </P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>DECLARE</STRONG><BR>&nbsp;&nbsp;sql_stmt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(200);<BR>&nbsp;&nbsp;plsql_block&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(500);<BR>&nbsp;&nbsp;emp_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;7566;<BR>&nbsp;&nbsp;salary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>(7,&nbsp;2);<BR>&nbsp;&nbsp;dept_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;50;<BR>&nbsp;&nbsp;dept_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(14)&nbsp;&nbsp;:=&nbsp;<EM>'PERSONNEL'</EM>;<BR>&nbsp;&nbsp;LOCATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(13)&nbsp;&nbsp;:=&nbsp;<EM>'DALLAS'</EM>;<BR>&nbsp;&nbsp;emp_rec&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emp%<STRONG>ROWTYPE</STRONG>;<BR><STRONG>BEGIN</STRONG><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;<EM>'CREATE&nbsp;TABLE&nbsp;bonus&nbsp;(id&nbsp;NUMBER,&nbsp;amt&nbsp;NUMBER)'</EM>;<BR><BR>&nbsp;&nbsp;sql_stmt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;<EM>'INSERT&nbsp;INTO&nbsp;dept&nbsp;VALUES&nbsp;(:1,&nbsp;:2,&nbsp;:3)'</EM>;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;sql_stmt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;dept_id,&nbsp;dept_name,&nbsp;LOCATION;<BR><BR>&nbsp;&nbsp;sql_stmt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;<EM>'SELECT&nbsp;*&nbsp;FROM&nbsp;emp&nbsp;WHERE&nbsp;empno&nbsp;=&nbsp;:id'</EM>;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;sql_stmt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>INTO</STRONG>&nbsp;emp_rec<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;emp_id;<BR><BR>&nbsp;&nbsp;plsql_block&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;<EM>'BEGIN&nbsp;emp_pkg.raise_salary(:id,&nbsp;:amt);&nbsp;END;'</EM>;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;plsql_block<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;7788,&nbsp;500;<BR><BR>&nbsp;&nbsp;sql_stmt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<EM>'UPDATE&nbsp;emp&nbsp;SET&nbsp;sal&nbsp;=&nbsp;2000&nbsp;WHERE&nbsp;empno&nbsp;=&nbsp;:1&nbsp;RETURNING&nbsp;sal&nbsp;INTO&nbsp;:2'</EM>;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;sql_stmt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;emp_id<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURNING&nbsp;<STRONG>INTO</STRONG>&nbsp;salary;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;<EM>'DELETE&nbsp;FROM&nbsp;dept&nbsp;WHERE&nbsp;deptno&nbsp;=&nbsp;:num'</EM><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;dept_id;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;<EM>'ALTER&nbsp;SESSION&nbsp;SET&nbsp;SQL_TRACE&nbsp;TRUE'</EM>;<BR><STRONG>END</STRONG>; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P>下例中,過程接受一個(gè)數(shù)據(jù)表名(如"emp")和一個(gè)可選的WHERE子句(如"sal &gt; 
                        2000")。如果我們沒有提供WHERE條件,程序會(huì)刪除指定表中所有的行,否則就會(huì)按照給定的條件刪除行: 
</P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>CREATE</STRONG>&nbsp;<STRONG>PROCEDURE</STRONG>&nbsp;delete_rows(<BR>&nbsp;&nbsp;table_name&nbsp;&nbsp;&nbsp;<STRONG>IN</STRONG>&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>,<BR>&nbsp;&nbsp;condition&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>IN</STRONG>&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>&nbsp;<STRONG>DEFAULT</STRONG>&nbsp;<STRONG>NULL</STRONG><BR>)&nbsp;<STRONG>AS</STRONG><BR>&nbsp;&nbsp;where_clause&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(100)&nbsp;:=&nbsp;<EM>'&nbsp;<STRONG>WHERE</STRONG>&nbsp;'</EM>&nbsp;||&nbsp;condition;<BR><STRONG>BEGIN</STRONG><BR>&nbsp;&nbsp;<STRONG>IF</STRONG>&nbsp;condition&nbsp;<STRONG>IS</STRONG>&nbsp;<STRONG>NULL</STRONG>&nbsp;<STRONG>THEN</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;where_clause&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;<STRONG>NULL</STRONG>;<BR>&nbsp;&nbsp;<STRONG>END</STRONG>&nbsp;<STRONG>IF</STRONG>;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;<EM>'<STRONG>DELETE</STRONG>&nbsp;<STRONG>FROM</STRONG>&nbsp;'</EM>&nbsp;||&nbsp;table_name&nbsp;||&nbsp;where_clause;<BR><STRONG>EXCEPTION</STRONG><BR>&nbsp;&nbsp;...<BR><STRONG>END</STRONG>; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P class=title2>2、USING子句的向后兼容</P>
                        <P>當(dāng)動(dòng)態(tài)INSERT、UPDATE或DELETE語句有一個(gè)RETURNING子句時(shí),輸出綁定參數(shù)可以放到RETURNING 
                        INTO或USING子句的后面。XXXXXXXXXX在新的應(yīng)用程序中要使用RETURNING 
                        INTO,而舊的應(yīng)用程序可以繼續(xù)使用USING,如下例: </P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>DECLARE</STRONG><BR>&nbsp;&nbsp;sql_stmt&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(200);<BR>&nbsp;&nbsp;my_empno&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;7902;<BR>&nbsp;&nbsp;my_ename&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(10);<BR>&nbsp;&nbsp;my_job&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(9);<BR>&nbsp;&nbsp;my_sal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>(7,&nbsp;2)&nbsp;&nbsp;:=&nbsp;3250.00;<BR><STRONG>BEGIN</STRONG><BR>&nbsp;&nbsp;sql_stmt&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;&nbsp;<EM>'UPDATE&nbsp;emp&nbsp;SET&nbsp;sal&nbsp;=&nbsp;:1&nbsp;WHERE&nbsp;empno&nbsp;=&nbsp;:2&nbsp;'</EM><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;<EM>'RETURNING&nbsp;ename,&nbsp;job&nbsp;INTO&nbsp;:3,&nbsp;:4'</EM>;<BR><BR>&nbsp;&nbsp;<EM>/*&nbsp;Bind&nbsp;returned&nbsp;values&nbsp;through&nbsp;USING&nbsp;clause.&nbsp;*/</EM><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;sql_stmt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;my_sal,&nbsp;my_empno,&nbsp;<STRONG>OUT</STRONG>&nbsp;my_ename,&nbsp;<STRONG>OUT</STRONG>&nbsp;my_job;<BR><BR>&nbsp;&nbsp;<EM>/*&nbsp;Bind&nbsp;returned&nbsp;values&nbsp;through&nbsp;RETURNING&nbsp;<STRONG>INTO</STRONG>&nbsp;clause.&nbsp;*/</EM><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;sql_stmt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;my_sal,&nbsp;my_empno<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURNING&nbsp;<STRONG>INTO</STRONG>&nbsp;my_ename,&nbsp;my_job;<BR>&nbsp;&nbsp;...<BR><STRONG>END</STRONG>; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P class=title2>3、指定參數(shù)模式</P>
                        <P>使用USING子句時(shí),我們不需要為輸入?yún)?shù)指定模式,因?yàn)槟J(rèn)的就是IN;而RETURNING 
                        INTO子句中我們是不可以指定輸出參數(shù)的模式的,因?yàn)槎x中它就是OUT模式。看一下下面的例子: </P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>DECLARE</STRONG><BR>&nbsp;&nbsp;sql_stmt&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(200);<BR>&nbsp;&nbsp;dept_id&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;30;<BR>&nbsp;&nbsp;old_loc&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(13);<BR><STRONG>BEGIN</STRONG><BR>&nbsp;&nbsp;sql_stmt&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;<EM>'DELETE&nbsp;FROM&nbsp;dept&nbsp;WHERE&nbsp;deptno&nbsp;=&nbsp;:1&nbsp;RETURNING&nbsp;loc&nbsp;INTO&nbsp;:2'</EM>;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;sql_stmt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;dept_id<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURNING&nbsp;<STRONG>INTO</STRONG>&nbsp;old_loc;<BR>&nbsp;&nbsp;...<BR><STRONG>END</STRONG>; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P>在適當(dāng)?shù)臅r(shí)候,我們必須為綁定參數(shù)指定OUT或IN OUT模式。例如,假定我們想調(diào)用下面的過程: </P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>CREATE</STRONG>&nbsp;<STRONG>PROCEDURE</STRONG>&nbsp;create_dept(<BR>&nbsp;&nbsp;deptno&nbsp;&nbsp;&nbsp;<STRONG>IN</STRONG>&nbsp;<STRONG>OUT</STRONG>&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>,<BR>&nbsp;&nbsp;dname&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>IN</STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>,<BR>&nbsp;&nbsp;loc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>IN</STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG><BR>)&nbsp;<STRONG>AS</STRONG><BR><STRONG>BEGIN</STRONG><BR>&nbsp;&nbsp;<STRONG>SELECT</STRONG>&nbsp;deptno_seq.<STRONG>NEXTVAL</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>INTO</STRONG>&nbsp;deptno<BR>&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>FROM</STRONG>&nbsp;DUAL;<BR><BR>&nbsp;&nbsp;<STRONG>INSERT</STRONG>&nbsp;<STRONG>INTO</STRONG>&nbsp;dept<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VALUES</STRONG>&nbsp;(deptno,&nbsp;dname,&nbsp;loc);<BR><STRONG>END</STRONG>; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P>要從動(dòng)態(tài)PL/SQL塊調(diào)用過程,就必須為與形參關(guān)聯(lián)的綁定參數(shù)指定IN OUT模式,如下: </P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>DECLARE</STRONG><BR>&nbsp;&nbsp;plsql_block&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(500);<BR>&nbsp;&nbsp;new_deptno&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>(2);<BR>&nbsp;&nbsp;new_dname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(14)&nbsp;&nbsp;:=&nbsp;<EM>'ADVERTISING'</EM>;<BR>&nbsp;&nbsp;new_loc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(13)&nbsp;&nbsp;:=&nbsp;<EM>'NEW&nbsp;YORK'</EM>;<BR><STRONG>BEGIN</STRONG><BR>&nbsp;&nbsp;plsql_block&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;<EM>'BEGIN&nbsp;create_dept(:a,&nbsp;:b,&nbsp;:c);&nbsp;END;'</EM>;<BR><BR>&nbsp;&nbsp;<STRONG>EXECUTE</STRONG>&nbsp;<STRONG>IMMEDIATE</STRONG>&nbsp;plsql_block<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;<STRONG>IN</STRONG>&nbsp;<STRONG>OUT</STRONG>&nbsp;new_deptno,&nbsp;new_dname,&nbsp;new_loc;<BR><BR>&nbsp;&nbsp;<STRONG>IF</STRONG>&nbsp;new_deptno&nbsp;&gt;&nbsp;90&nbsp;<STRONG>THEN</STRONG>&nbsp;...<BR><STRONG>END</STRONG>; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P class=title1>四、使用OPEN-FOR、FETCH和CLOSE語句</P>
                        <P>我們可以使用三種語句來處理動(dòng)態(tài)多行查詢:OPEN-FOR,F(xiàn)ETCH和CLOSE。首先,用OPEN打開多行查詢的游標(biāo)變量。然后,用FETCH語句把數(shù)據(jù)從結(jié)果集中取出來。當(dāng)所有的數(shù)據(jù)都處理完以后,就可以用CLOSE語句關(guān)閉游標(biāo)變量了。 
                        </P>
                        <P class=title2>1、打開游標(biāo)變量</P>
                        <P>OPEN-FOR語句可以把游標(biāo)變量和一個(gè)多行查詢關(guān)聯(lián)起來,然后執(zhí)行查詢,確定結(jié)果集,并把游標(biāo)放到結(jié)果集的第一行,然后把%ROWCOUNT值初始化為零。 
                        </P>
                        <P>與OPEN-FOR的靜態(tài)形式不同的是,動(dòng)態(tài)形式有一個(gè)可選的USING子句。在運(yùn)行時(shí),USING子句中的綁定變量可以替換動(dòng)態(tài)SELECT語句中相對(duì)應(yīng)的占位符,語法如下: 
                        </P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>OPEN</STRONG>&nbsp;{cursor_variable&nbsp;|&nbsp;:host_cursor_variable}&nbsp;<STRONG>FOR</STRONG>&nbsp;dynamic_string<BR>[USING&nbsp;bind_argument[,&nbsp;bind_argument]...]; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P>其中,cursor_variable是一個(gè)弱類型(沒有返回類型)的游標(biāo)變量,host_cursor_variable是聲明在PL/SQL主環(huán)境中的游標(biāo)變量,dynamic_string是字符串表達(dá)式,代表一個(gè)多行查詢。 
                        </P>
                        <P>在下面的例子中,我們聲明一個(gè)游標(biāo)變量,并把它和動(dòng)態(tài)SELECT語句關(guān)聯(lián)起來: </P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>DECLARE</STRONG><BR>&nbsp;&nbsp;<STRONG>TYPE</STRONG>&nbsp;empcurtyp&nbsp;<STRONG>IS</STRONG>&nbsp;<STRONG>REF</STRONG>&nbsp;<STRONG>CURSOR</STRONG>;&nbsp;&nbsp;&nbsp;<EM>--&nbsp;define&nbsp;weak&nbsp;REF&nbsp;CURSOR&nbsp;type</EM><BR><BR>&nbsp;&nbsp;emp_cv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empcurtyp;&nbsp;&nbsp;&nbsp;<EM>--&nbsp;declare&nbsp;cursor&nbsp;variable</EM><BR>&nbsp;&nbsp;my_ename&nbsp;&nbsp;&nbsp;<STRONG>VARCHAR2</STRONG>(15);<BR>&nbsp;&nbsp;my_sal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>NUMBER</STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;1000;<BR><STRONG>BEGIN</STRONG><BR>&nbsp;&nbsp;<STRONG>OPEN</STRONG>&nbsp;emp_cv&nbsp;<STRONG>FOR</STRONG>&nbsp;&nbsp;&nbsp;<EM>--&nbsp;open&nbsp;cursor&nbsp;variable</EM><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<EM>'SELECT&nbsp;ename,&nbsp;sal&nbsp;FROM&nbsp;emp&nbsp;WHERE&nbsp;sal&nbsp;&gt;&nbsp;:s'</EM>&nbsp;USING&nbsp;my_sal;<BR>&nbsp;&nbsp;...<BR><STRONG>END</STRONG>; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P>其中綁定參數(shù)的值只在游標(biāo)變量打開時(shí)計(jì)算一次。所以,如果我們想使用一個(gè)新的綁定值進(jìn)行查詢,就必須重新打開游標(biāo)變量。 
                        </P>
                        <P class=title2>2、從游標(biāo)變量取得數(shù)據(jù)</P>
                        <P>FETCH語句可以從多行查詢的結(jié)果集中返回單獨(dú)的一行數(shù)據(jù),并把數(shù)據(jù)內(nèi)容賦值給INTO子句后的對(duì)應(yīng)的變量,然后屬性%ROWCOUNT增加一,游標(biāo)移到下一行,語法如下: 
                        </P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>
                            <TR>
                              <TD 
                                noWrap><STRONG>FETCH</STRONG>&nbsp;{cursor_variable&nbsp;|&nbsp;:host_cursor_variable}<BR>&nbsp;<STRONG>INTO</STRONG>&nbsp;{define_variable[,&nbsp;define_variable]...&nbsp;|&nbsp;record}; 
                              </TD></TR></TBODY></TABLE></BLOCKQUOTE>
                        <P>繼續(xù)上面的例子,我們把從游標(biāo)變量emp_cv取得的數(shù)據(jù)放到變量my_ename和my_sal:</P>
                        <BLOCKQUOTE>
                          <TABLE>
                            <TBODY>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男人都懂的| 秋霞午夜鲁丝一区二区老狼| 国产精品三级电影| 欧美在线观看一二区| 国内成人免费视频| 亚洲最大色网站| 中文字幕欧美激情| 日韩女优电影在线观看| 欧美午夜不卡在线观看免费| 成人激情免费网站| 国产综合久久久久影院| 偷拍自拍另类欧美| 亚洲乱码精品一二三四区日韩在线| 久久久久久亚洲综合| 56国语精品自产拍在线观看| 色老头久久综合| a亚洲天堂av| 丁香五精品蜜臀久久久久99网站 | av在线不卡观看免费观看| 日韩电影在线观看网站| 亚洲精品日韩综合观看成人91| 国产三级精品视频| 精品国内片67194| 欧美一区二区三区视频在线| 欧美亚洲另类激情小说| 91热门视频在线观看| 国产成人午夜99999| 久久精品99久久久| 日本aⅴ免费视频一区二区三区 | 国产乱人伦精品一区二区在线观看| 日韩vs国产vs欧美| 视频一区视频二区中文字幕| 亚洲自拍偷拍网站| 亚洲国产aⅴ成人精品无吗| 亚洲激情图片一区| 亚洲一区精品在线| 亚洲一区日韩精品中文字幕| 一区二区三区四区高清精品免费观看| 国产精品成人一区二区艾草| 国产精品入口麻豆九色| 国产精品嫩草影院com| 国产精品欧美一级免费| 国产精品区一区二区三| 国产精品久久久久久亚洲伦| 中文字幕在线观看不卡| 自拍偷拍欧美精品| 一区二区在线免费观看| 一区二区三区欧美| 午夜久久久久久| 免费人成在线不卡| 国产麻豆视频一区| eeuss鲁片一区二区三区| 99天天综合性| 欧美人xxxx| 精品剧情在线观看| 日本一区二区三区dvd视频在线| 国产精品你懂的在线欣赏| 日韩理论片一区二区| 亚洲国产成人va在线观看天堂| 偷拍一区二区三区四区| 久久99精品国产.久久久久久| 国产在线一区二区| 成人国产在线观看| 欧美丝袜丝交足nylons图片| 日韩女优视频免费观看| 国产清纯在线一区二区www| 国产精品成人免费在线| 亚洲v中文字幕| 国产伦精品一区二区三区免费| 成人a区在线观看| 欧美日韩在线播| 精品国产伦一区二区三区免费| 国产精品少妇自拍| 五月婷婷激情综合| 国产河南妇女毛片精品久久久| 色美美综合视频| 精品国产在天天线2019| 中文字幕日韩精品一区| 日日夜夜精品视频免费| 大陆成人av片| 欧美日韩国产影片| 国产精品视频免费| 性做久久久久久免费观看| 九一九一国产精品| 一本色道久久加勒比精品 | 国产成人日日夜夜| 欧美色图第一页| 国产精品私人影院| 日欧美一区二区| 91精品中文字幕一区二区三区| 久久久青草青青国产亚洲免观| 亚洲综合色成人| 国产精品911| 欧美一区二区三区人| 亚洲人精品午夜| 国产一区二区久久| 欧美美女一区二区在线观看| 中文字幕av一区 二区| 六月婷婷色综合| 欧美午夜寂寞影院| 中文字幕日本不卡| 国产在线视频不卡二| 欧美美女一区二区| 亚洲欧美经典视频| 懂色av一区二区三区免费观看| 欧美一区二区三区在线观看 | 国产午夜亚洲精品不卡| 日日噜噜夜夜狠狠视频欧美人| 91在线看国产| 日本一区二区动态图| 狠狠色丁香久久婷婷综| 538在线一区二区精品国产| 亚洲人成网站在线| 成人av影院在线| 久久中文字幕电影| 全国精品久久少妇| 欧美精品在线观看一区二区| 亚洲精品成人精品456| 成人的网站免费观看| 欧美激情自拍偷拍| 国产精品99久久久| 久久久一区二区| 久久精品二区亚洲w码| 欧美区视频在线观看| 婷婷开心久久网| 欧美日韩高清在线播放| 亚瑟在线精品视频| 欧美日韩精品专区| 亚洲国产一区二区三区青草影视| 色综合天天综合| 亚洲色欲色欲www在线观看| 不卡免费追剧大全电视剧网站| 国产亚洲成aⅴ人片在线观看| 国产中文一区二区三区| 久久天天做天天爱综合色| 狠狠色丁香久久婷婷综合丁香| 亚洲精品一线二线三线| 国产美女主播视频一区| 中文在线免费一区三区高中清不卡| 国产精品一区二区在线观看不卡| 久久久久久亚洲综合影院红桃 | 欧美日精品一区视频| 一区二区三区91| 欧美日韩一区国产| 天天综合天天综合色| 欧美精选在线播放| 麻豆精品一区二区av白丝在线| 日韩天堂在线观看| 国产一区二三区好的| 国产精品免费视频观看| 97国产一区二区| 亚洲123区在线观看| 日韩欧美一级精品久久| 国产精品影视在线| 欧美激情综合在线| 91久久精品网| 亚洲bt欧美bt精品777| 日韩一区二区免费电影| 国产成人午夜精品影院观看视频| 国产精品高清亚洲| 精品视频全国免费看| 蜜臀精品一区二区三区在线观看| 精品1区2区在线观看| 成人一区二区三区在线观看| 亚洲欧美另类综合偷拍| 91精品免费观看| 成人免费视频一区| 亚洲高清视频在线| 久久久久久夜精品精品免费| 99久久er热在这里只有精品15| 午夜日韩在线观看| 久久先锋影音av| 欧美最新大片在线看| 久久99精品视频| 樱桃国产成人精品视频| 欧美成人福利视频| 91九色最新地址| 精品亚洲免费视频| 亚洲激情六月丁香| 精品国产乱码久久久久久影片| 99久久国产综合色|国产精品| 日韩av一级片| 亚洲三级免费观看| 欧美成人伊人久久综合网| 91丨国产丨九色丨pron| 日韩av不卡一区二区| 亚洲人成7777| 26uuu另类欧美| 欧美日韩日日夜夜| 国产成人精品综合在线观看 | av亚洲产国偷v产偷v自拍| 日本欧美一区二区三区乱码| 亚洲欧美综合在线精品| 久久亚洲综合av| 欧美喷潮久久久xxxxx| 成人免费高清视频| 精品亚洲成a人| 午夜久久久久久久久| 中文字幕在线观看一区| 久久久精品黄色|