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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 5.html

?? 介紹linux下文件和設備編程
?? HTML
?? 第 1 頁 / 共 3 頁
字號:
在Pro*C/C++中可以使用如下的語句連接到Oracle數據庫服務器:<p>EXEC SQL CONNECT :username IDENTIFIED BY:password [USING :server];<p>或EXECSQL CONNECT : user_pwd [USING:server];<p>參數說明如下:<p>&nbsp;&nbsp;&nbsp; &middot;username:數據庫用戶名。<p>&nbsp;&nbsp;&nbsp; &middot;password:用戶口令。<p>&nbsp;&nbsp;&nbsp; &middot;server:連接到數據庫。user_pwd:用戶名及口令,二者必須用反斜杠(/)隔開<p><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I223" ID="I223"></A><center><b><font size=+2>斷開</font></b></center><br>同連接相比,斷開相對簡單,只需將所有事務回滾,并釋放內存、斷開連接即可。在Pro*C/C++中可使用如下語句實現該功能:<p>EXEC SQL ROLLBACK [WORK] [RELEASE];<p>其中ROLLBACK起到回滾并結束事務,清除所有保存點的作用。RELEASE子句用于釋放內存、斷開連接。<p>我們通過編寫函數disconnect來實現與數據庫的斷開。該函數的編寫過程中,我們采用了以上介紹的斷開數據庫連接技術。<p>該函數無返回值,無參數。函數聲明如下:<p>void disconnect();<p>函數中實現斷開數據庫連接的代碼為:<p>EXEC SQL ROLLBACK WORK RELEASE;<p><p><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I224" ID="I224"></A><center><b><font size=+2>動態SQL</font></b></center><br>&nbsp;&nbsp;&nbsp; 在實際工作中,有時我們需要在運行應用程序時接收和處理不同的SQL語句,比如在該程序的功能函數中需要不同的select語句。因為這些SQL語是在程序運行時動態輸入的,所以成為動態SQL語句。<p>動態SQL與靜態SQL語句比較:<p>&nbsp;&nbsp;&nbsp; &middot;靜態SQL語句被內嵌到了源程序中,而動態SQL語句則是在應用程序運行時所輸入的SQL語句,它被存儲到了字符串變量中。因此使用動態SQL比靜態SQL更靈活。<p>&nbsp;&nbsp;&nbsp; &middot;使用動態SQL需要編寫更加復雜的代碼,而使用靜態SQL只需將SQL語句內嵌到應用程序中就可以了。<p>&nbsp;&nbsp;&nbsp; &middot;如果能夠能夠確定應用程序所要使用的SQL語句和它的結構,那么使用靜態SQL,因為這樣不僅可以簡化編程,而且應用程序的執行性能更好;而如果不能確定要執行何種SQL語句、宿主變量個數,宿主變量數據類型以及SQL語句所涉及到的數據對象,那么就要使用動態SQL。這樣可使應用程序更加靈活,但程序編制更加復雜。<p>在Pro*C/C++應用程序中使用動態SQL共有四種方法:<p>&nbsp;&nbsp;&nbsp; &middot;動態SQL方法一:適用于不包含宿主變量的SQL語句,并且不能是SELECT語句。<p>&nbsp;&nbsp;&nbsp; &middot;動態SQL方法二:適用于宿主變量個數已經確定的SQL語句,并且不能是SELECT語句。<p>&nbsp;&nbsp;&nbsp; &middot;動態SQL方法三:適用于查詢列表已經確定的SQL語句。<p>&nbsp;&nbsp;&nbsp; &middot;動態SQL方法四:適用于查詢列表以及宿主變量個數均不能確定的SQL語句<center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I225" ID="I225"></A><center><b><font size=+2>方法三</font></b></center><br>1.動態SQL方法三<p>&nbsp;&nbsp;&nbsp; 本方法與動態SQL方法二比較類似。不同的是,方法三將PREPARE命令與游標命令結合起來使用。因此,本方法可以接收和處理SELECT語句。但在預編譯時,必須要知道查詢列表項的列數以及占位符的個數。數據庫對象名(例如:表名和列名)可以在運行時指定,但數據庫對象名不能是宿主變量。另外,也可以在運行時指定條件、分組以及排序子句。<p>使用動態SQL方法三的步驟如下:<p>1)使用PREPARE命令準備SQL語句<p>該命令用于命名和分析SQL語句。在分析了SQL語句后,可以使用EXECUTE語句多次執行該語句。PREPARE命令的語法如下:<p>EXEC SQL PREPARE statement_name FROM{:host_string|string_literal};<p>參數說明如下:<p>&nbsp;&nbsp;&nbsp; &middot;statement_name:語句名稱,它是一個標識符而不是宿主變量。<p>&nbsp;&nbsp;&nbsp; &middot;host_string:包含了SQL語句的宿主變量。<p>&nbsp;&nbsp;&nbsp; &middot;string_literal:包含了SQL語句的字符串。<p>2) 使用DECLARE命令定義游標<p>該命令語法如下:<p>DECLARE cursor_name CURSOR FORstatement_name;<p>參數說明如下:<p>&nbsp;&nbsp;&nbsp; &middot;cursor_name:游標名。<p>&nbsp;&nbsp;&nbsp; &middot;statement_name:步驟1中的SQL語句標識符。<p>3) 使用OPEN命令打開游標<p>該命令的語法如下:<p>OPEN cursor_name [USING host_variable_list] ;<p>參數說明如下:<p>&nbsp;&nbsp;&nbsp; &middot;cursor_name:步驟2中的游標名。<p>&nbsp;&nbsp;&nbsp; &middot;host_variable_list:宿主變量列表,使用該列表中的項替換SQL語句中的占位符。<p>需要注意的是,如果SQL語句不是SELECT語句,那么在執行了OPEN命令后即完成了SQL語句的執行,而無需執行FETCH語句。<p>4) 使用FETCH語句推進游標、檢索數據<p>該語句的語法如下:<p>FETCH cursor_name INTO host_variable_list;<p>參數說明如下:<p>cursor_name:游標名。<p>host_variable_list:宿主變量名列表,將檢索到的數據保存到這些宿主變量中。<p>5) 使用CLOSE命令關閉游標<p>該命令語法如下:<p>CLOSE cursor_name;<p><p><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I226" ID="I226"></A><center><b><font size=+2>方法四</font></b></center><br>2.動態SQL方法四<p>&nbsp;&nbsp;&nbsp; 使用本方法可以接收和處理各SQL語句,并且在預編譯前不需要知道查詢列表項和輸入宿主變量的占位符個數。因為輸入宿主變量以及查詢列表項的個數在運行應用程序前無法確定,所以需要為它們動態分配內存。為了完成這項認務,必須使用SQLDA結構。<p>&nbsp;&nbsp;&nbsp; SQLDA結構的作用是處理和保存查詢列表項以及宿主變量占位符的信息。在動態方法四中輸入宿主變量實際上并不是作為宿主變量使用,它們只是一些占位符,我們也將它稱為綁定變量。關于SQLDA的相關知識請參閱第八章,這里不再累述。<p>應用方法四主要處理查詢列表項或宿主變量個數未知的SQL語句。其基本步驟如下:<p>1)定義用于保存動態SQL語句的宿主字符串<p>應用程序需要使用宿主變量來存儲動態SQL語句,這樣就需要定義一個字符串宿主變量。<p>2)定義SQLDA<p>應用程序需要使用SQLDA結構來存儲查詢列表項以及占位符的信息,所以我們必須使用如下語句將該結構包含到應用程序中:<p>EXEC SQL INCLUDE sqlda;<p>爾后還要定義指向查詢描述區的指針。<p>3)為描述區分配內存<p>在定SQLDA結構后,為了使用查詢描述區和綁定描述區,我們還必須使用函數sqlald()為它們分配內存。當分配描述區時,函數sqlald()會將V[0]到V[N-1]設置為0。該函數語法如下:<p>descriptor_name=sqlald(max_vars,max_name,max_ind_name);<p>參數說明如下:<p>&nbsp;&nbsp;&nbsp; &middot;max_vars:查詢列表項或占位符的最大個數。<p>&nbsp;&nbsp;&nbsp; &middot;max_name:查詢列表項名稱或占位符名稱的最大長度。<p>&nbsp;&nbsp;&nbsp; &middot;max_ind_name:占位符指示變量名稱的最大長度。<p>4)設置DESCRIBE命令所對應的查詢列表項或占位符的最大個數<p>這一步用于設置DESCRIBE命令可以描述的查詢列表項或占位符的最大個數。<p>5)將SQL語句存儲到宿主字符串中<p>這一步用于接收SQL語句,并將SQL語句保存到宿主變量中。<p>6)使用PREPARE命令準備動態SQL語句<p>這一步用于命名和解析SQL語句。<p>7)使用DECLEAR命令定義游標<p>8)使用DESCRIBE命令獲取綁定變量信息<p>DESCRIBE BIND VARIABLES命令用于將占位符信息存儲到綁定描述區中。<p>9)重新設置占位符個數<p>這一步是將DESCRIBE命令獲取到的實際占位符個數設置為變量N的值。<p>10)為綁定變量分配內存并輸入數據<p>如果存在綁定變量占位符,那么應用程序必須為其賦值并分配內存。<p>11)打開游標<p>12)使用DESCRIBE命令獲取查詢列表信息<p>如果動態SQL語句是SELECT語句,我們還必須使用DESCRIBE SELECT LIST命令將查詢列表項的信息存儲到查詢描述區中。另外需要注意兩點:<p>&nbsp;&nbsp;&nbsp; &middot;該命令將F設置為實際的查詢列表數,如果SQL語句不是SELECT語句,則變量F被設置為0。<p>&nbsp;&nbsp;&nbsp; &middot;NUMBER值長度不可用,必須使用函數sqlprc()獲取精度和標度。<p>13)重新設置查詢列表項<p>這一步用于將DESCRIBE命令獲取到的實際查詢列表項個數設置為查詢列表項的最大個數。<p>14)重新設置每個查詢列表項的長度和數據類型<p>在使用FETCH命令獲取查詢列表項數據前,為顯示結果可能需要重新設置某些元素的長度和數據類型。<p>15)利用FETCH命令檢索數據<p>執行此命令后,數據被存儲到了查詢描述區中。<p>16)獲取并處理查詢列表值<p>在執行了FETCH命令后,可以通過數組V和數組I中的元素來處理檢索到的數據。<p>17)關閉游標<p>在推進游標、檢索完數據后,執行如下命令關閉游標:<p>EXEC SQLCLOSE s_cursor;<p>18)釋放空間使用函數free()釋放由函數malloc()所分配的內存,使用函數sqlclu()釋放為查詢描述區以及綁定描述區所分配的空間<p><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I227" ID="I227"></A><center><b><font size=+2>檢測錯誤和狀態改變</font></b></center><br>在Pro*C/C++中,用于檢測錯誤和狀態改變的方法有如下兩種:<p>&nbsp;&nbsp;&nbsp; &middot;定義狀態變量SQLSTATE或SQLCODE,在執行了SQL語句后檢查它們的值,并根據需要執行相應的操作。<p>&nbsp;&nbsp;&nbsp; &middot;使用SQLCA。SQLCA被定義在頭文件sqlca.h中。<p>在該程序中我們使用了SQLCA進行錯誤檢測。關于SQLCA的詳細描述請參閱第八章相關說明,這里不再累述。<p>WHENEVER語句用于檢測并處理錯誤,使用該語句的語法如下:<p>EXEC SQL WHENEVER&lt;condition&gt;&lt;action&gt;<p>1)條件(condition)<p>Oracle可自動檢測以下條件:<p>&nbsp;&nbsp;&nbsp; &middot;SQLWORING:當Oracle返回警告信息時會設置sqlworn[0]為“W”。使用該條件必須定義SQLCA。<p>&nbsp;&nbsp;&nbsp; &middot;SQLERROR:出現嚴重錯誤,此時SQLCODE為負值。<p>&nbsp;&nbsp;&nbsp; &middot;NOT FOUND:當Oracle不能找到滿足條件的記錄時SQLCODE被置為+1403。<p>2)操作(action)<p>當Oracle檢測到以上條件時,應用程序可以執行如下操作:<p>&nbsp;&nbsp;&nbsp; &middot;CONTINUE:繼續運行下一條語句。<p>&nbsp;&nbsp;&nbsp; &middot;DO:執行錯誤處理函數。<p>&nbsp;&nbsp;&nbsp; &middot;GOTO lable_name:轉移到標號處執行。STOP:停止執行,回滾事務。<p><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I228" ID="I228"></A><center><b><font size=+2>SQLCA</font></b></center><br>SQLCA是一個數據結構,它的成員包含了SQL語句執行后的錯誤、警告和狀態信息。在ORACLE_HOME\pro80\c\include目錄下的sqlca.h文件中定義了SQLCA結構。<p>使用如下語句可以將SQLCA包含到應用程序中:<p>EXEC SQL INCLUDE SQLCA;<p>或 #include&lt;sqlca.h&gt;<p>其部分結構成員如下:<p>&nbsp;&nbsp;&nbsp; &middot;sqlcaid:標識SQL通訊區的字符串成員,它被初始化為“SQLCA”。<p>&nbsp;&nbsp;&nbsp; &middot;sqlcabc:整數成員,用于保存SQLCA的字節長度。<p>&nbsp;&nbsp;&nbsp; &middot;sqlcode:整數成員,它保存著SQL語句執行后的狀態代碼。Sqlcode的值和含義見表8-1:<p><p><br>Sqlcode的值<p>含義<p><br>0 執行SQL語句成功<p><br>&gt;0 執行了該語句但檢測到異常情況<p><br>&lt;0 出現嚴重錯誤,語句沒有執行<p>&nbsp;&nbsp;&nbsp; &middot;sqlwarn:用于設置警告標記的單字符數組,通過賦“W”來設置警告標記。<p>&nbsp;&nbsp;&nbsp; &middot;sqlerrm:包含了成員sqlerrml及sqlerrmc的一個結構,其中sqlerrml用于保存錯誤文本長度,sqlerrmc用于保存錯誤文本。<p>Sqlerrmc最多可以保存70個字符的錯誤消息,使用函數sqlglm可以獲得完整的錯誤消息文本,該函數的語法如下:<p>voidsqlglm(char *message_buffer,size_t *buffer_size,size_t *message_lenth);<p>參數說明如下:<p>&nbsp;&nbsp;&nbsp; &middot;message_buffer:存儲錯誤消息的文本緩沖區(尾部以空格填充)。<p>&nbsp;&nbsp;&nbsp; &middot;buffer_size:緩沖區的字節長度。<p>&nbsp;&nbsp;&nbsp; &middot;message_lenth:錯誤消息的實際長度。<p>注意,調用該函數前必須確保SQLCODE或sqlca.sqlcode不等于0。該函數只能用于非線程應用。<p>SQLCA中還包括其它結構成員,包括sqlerrp、sqlerrd、sqlext等,由于這些成員的作用相對次要或在程序中沒有使用,故這里暫不作介紹。<p><p><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I229" ID="I229"></A><center><b><font size=+2>SQLDA</font></b></center><br>SQLDA結構的作用是處理和保存查詢列表項以及宿主變量占位符的信息。<p>當SQL語句所包含的查詢列表項或綁定變量的個數不能確定時,我們就需要使用SQLDA結構來定義和描述查詢列表項或綁定變量占位符。因此,該結構也被稱為描述區,綁定變量列表所對應的綁定變量列表所對應的描述區就稱為綁定描述區。<p>SQLDA結構保存在ORACLE_HOME\pro80\include目錄下的sqida.h文件中。利用如下語句可以將該結構包含至應用程序中:<p>EXEC SQL INCLUDE sqlda;<p>爾后還要定義指向查詢描述區和綁定描述區的指針:<p>SQLDA *bind_dp;<p>SQLDA *selectdp;<p>該結構的內容如下:<p>struct SQLDA<br>{<br>long&nbsp;&nbsp; N;<br>char&nbsp;&nbsp; **V;<br>long&nbsp;&nbsp; *L;<br>short&nbsp;&nbsp; *T;<br>short&nbsp;&nbsp; **I;<br>long&nbsp;&nbsp; F;<br>char&nbsp;&nbsp; **S;<br>short&nbsp;&nbsp; *M;<br>short&nbsp;&nbsp; *C;<br>char&nbsp;&nbsp; **X;<br>short&nbsp;&nbsp; *Y;<br>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色呦呦日韩精品| 91精品国产综合久久久久久漫画| 亚洲无人区一区| 日韩免费性生活视频播放| 99re66热这里只有精品3直播 | 国产精品午夜在线观看| 欧美日韩成人在线一区| 99国产精品久| 国产精品亚洲午夜一区二区三区 | 亚洲女子a中天字幕| 26uuu欧美| 欧美丰满少妇xxxxx高潮对白| eeuss鲁一区二区三区| 久久国产剧场电影| 日本美女一区二区| 一区二区高清在线| 最好看的中文字幕久久| 精品成人私密视频| 69精品人人人人| 欧美亚洲一区二区三区四区| 不卡一区在线观看| 国产一区二区三区免费播放| 日韩高清在线一区| 亚洲超碰精品一区二区| 一区二区三区国产精华| |精品福利一区二区三区| 国产亚洲一二三区| 久久人人超碰精品| 欧美岛国在线观看| 日韩亚洲电影在线| 欧美大片免费久久精品三p| 在线成人av影院| 欧美日韩另类一区| 在线影院国内精品| 在线欧美小视频| 欧美专区日韩专区| 91国产免费观看| 在线一区二区三区做爰视频网站| 97久久精品人人做人人爽| a亚洲天堂av| 99视频精品免费视频| 99久久精品99国产精品| 99精品1区2区| 欧美又粗又大又爽| 欧美日韩在线三级| 欧美群妇大交群中文字幕| 在线不卡免费欧美| 日韩午夜在线播放| 久久影院午夜论| 国产欧美日韩三级| 中文字幕亚洲综合久久菠萝蜜| 综合久久久久久| 夜夜嗨av一区二区三区| 亚洲国产成人精品视频| 日韩av一区二区三区四区| 蜜桃av一区二区三区电影| 国产精品主播直播| jlzzjlzz国产精品久久| 欧美亚洲国产一卡| 91.麻豆视频| 久久亚洲精精品中文字幕早川悠里| 日韩西西人体444www| 久久久国际精品| 国产精品的网站| 五月天亚洲婷婷| 国产资源在线一区| 91蜜桃在线免费视频| 欧美在线一区二区三区| 欧美电视剧在线看免费| 欧美激情中文字幕一区二区| 亚洲综合色区另类av| 日本免费在线视频不卡一不卡二| 国产精品1024| 欧洲精品视频在线观看| 精品国免费一区二区三区| 国产精品毛片久久久久久| 亚洲国产视频一区二区| 国产一区二区不卡在线| 在线日韩一区二区| 26uuu国产电影一区二区| 国产精品福利一区| 日韩精品成人一区二区在线| 成人综合婷婷国产精品久久蜜臀| 色婷婷精品久久二区二区蜜臂av| 欧美一级淫片007| 国产精品人成在线观看免费 | 亚洲午夜成aⅴ人片| 久久99国产精品免费| 一本到不卡免费一区二区| 91精品国产乱| 亚洲欧美另类综合偷拍| 国内一区二区视频| 91精彩视频在线观看| 久久久午夜电影| 亚洲影院久久精品| 成人精品在线视频观看| 欧美疯狂做受xxxx富婆| 最好看的中文字幕久久| 经典三级一区二区| 欧美色图第一页| 中文字幕一区二区三区在线观看 | 国产精品一区二区在线观看网站| 色老汉一区二区三区| 国产区在线观看成人精品| 五月激情六月综合| 91欧美一区二区| 国产女人水真多18毛片18精品视频| 日韩福利视频导航| 91久久精品国产91性色tv| 亚洲国产精品t66y| 国产在线视频不卡二| 欧美精品vⅰdeose4hd| 国产精品夫妻自拍| 国产精品一区二区三区99| 91精品国产丝袜白色高跟鞋| 亚洲欧美国产77777| 成人做爰69片免费看网站| 久久伊99综合婷婷久久伊| 天堂精品中文字幕在线| 欧美性生活一区| 亚洲精品伦理在线| av在线播放不卡| 欧美韩国日本不卡| 国产成人免费视频一区| 日韩精品一区在线| 麻豆精品在线播放| 91精品国产手机| 免费成人深夜小野草| 欧美一区二区三区在| 日本中文字幕不卡| 91精品国产91久久久久久一区二区| 亚洲人妖av一区二区| 99国产精品视频免费观看| 中文字幕一区日韩精品欧美| 成人黄色软件下载| 国产精品麻豆久久久| 暴力调教一区二区三区| 亚洲婷婷综合色高清在线| 91亚洲午夜精品久久久久久| 专区另类欧美日韩| 91久久一区二区| 亚洲第一电影网| 欧美区一区二区三区| 日本欧美在线观看| 欧美精品一区二区三区在线播放| 久久精品999| 久久久久久日产精品| 高清国产一区二区三区| 中文字幕一区二区在线观看| 色综合久久综合网97色综合| 亚洲图片欧美视频| 91精品国产综合久久香蕉麻豆| 日本成人在线视频网站| 精品毛片乱码1区2区3区| 国产精品一区二区三区四区| 中文字幕av一区二区三区免费看| 成人黄页毛片网站| 亚洲午夜免费视频| 日韩精品中午字幕| 大胆欧美人体老妇| 亚洲免费观看高清完整版在线 | 成人午夜av电影| 自拍偷拍国产精品| 欧美顶级少妇做爰| 国模娜娜一区二区三区| 中文字幕在线观看一区| 欧美色手机在线观看| 韩国三级电影一区二区| 国产精品电影一区二区| 欧美喷水一区二区| 国产精品羞羞答答xxdd| 亚洲欧美综合网| 欧美一区二区高清| 成人午夜碰碰视频| 亚洲成a人v欧美综合天堂| 欧美成人午夜电影| 91污在线观看| 乱中年女人伦av一区二区| 中文字幕在线不卡国产视频| 91.com视频| 99国产精品久久久久久久久久久| 日韩精品高清不卡| 中文字幕五月欧美| 日韩美女主播在线视频一区二区三区| 国产成人av一区二区三区在线| 亚洲主播在线播放| 久久嫩草精品久久久精品| 欧美午夜精品免费| 成人深夜福利app| 日韩精品一级二级| 中文字幕一区二区三区视频| 日韩欧美国产一二三区| 色综合色狠狠综合色| 国产一区二区中文字幕| 亚洲电影一级黄| **欧美大码日韩| 欧美经典三级视频一区二区三区| 5566中文字幕一区二区电影| 97国产一区二区| 国产在线视频精品一区|