青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

2. 嵌入式SQL的工作原理及其語句格式

Posted on 2008-09-10 09:53 Prayer 閱讀(1920) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫,SQLC/C++

將SQL嵌入到高級語言中混合編程,而程序中含有兩種不同計算模型的語句,一種是描述性的面向集合的SQL語句,一種是過程性的高級語言語句。兩種語言的分工是:SQL語句負責操縱數據庫,高級語言語句負責控制程序流程。

    它們之間的工作原理是:首先用SQL通信區(SQL Communication Area,簡稱SQLCA)向主語言傳遞SQL語句的執行狀態信息,使主語言能夠據此控制程序流程;在程序運行中,主語言向SQL語句提供參數,使用主變量(host variable)輸入數據;同時,程序把SQL語句查詢數據庫的結果交主語言進一步處理,其中使用主變量和游標(cursor)向主語言輸出數據,從而實現了SQL語言的過程化工作。
 

 一、SQL通信區的作用和定義

    SQL語句執行后,系統要反饋給應用程序若干信息,主要包括描述系統當前工作狀態和運行環境的各種數據,這些信息將送到SQL通信區SQLCA中。應用程序從SQLCA中取出這些狀態信息,據此決定接下來執行的語句。

    SQLCA是一個數據結構。

    定義語句: EXEC SQL INCLUDE SQLCA

    SQLCA中有一個存放每次執行SQL語句后返回代碼的變量SQLCODE。應用程序每執行完一條SQL 語句之后都應該測試一下SQLCODE的值,以了解該SQL語句執行情況并做相應處理。如果SQLCODE等于預定義的常量SUCCESS,則表示SQL語句成功,否則表示錯誤代碼。

例如:在執行刪除語句DELETE后,根據不同的執行情況,SQLCA中有下列不同的信息:
             · 違反數據保護規則,操作拒絕
             · 沒有滿足條件的行,一行也沒有刪除
             · 成功刪除,并有刪除的行數(SQLCODE=SUCCESS)
             · 無條件刪除警告信息
             · 由于各種原因,執行出錯
 

 
 

     
 

 
二、主變量的作用與使用方法

(1)主變量的作用

    嵌入式SQL語句中可以使用主語言的程序變量來輸入或輸出數據。我們把在SQL語句中使用的主語言程序變量簡稱為主變量。

    主變量根據其作用的不同,分為輸入主變量和輸出主變量。

    輸入主變量由應用程序對其賦值,SQL語句引用;

    輸出主變量由SQL語句對其賦值或設置狀態信息,返回給應用程序。

    一個主變量有可能既是輸入主變量又是輸出主變量。利用輸入主變量,我們可以指定向數據庫中插入的數據,可以將數據庫中的數據修改為指定值,可以指定執行的操作,可以指定WHERE子句或HAVING子句中的條件。利用輸出主變量,我們可以得到SQL語句的結果數據和狀態。

 

(2)指示變量

    所謂指示變量是一個整型變量,用來“指示”所指主變量的值或條件。

    一個主變量可以附帶一個任選的指示變量(Indicator Variable)。輸入主變量可以利用指示變量賦空值,輸出主變量可以利用指示變量檢測出是否空值,值是否被截斷。

 

(3)主變量的說明語句

    說明語句格式:

        BEGIN DECLARE SECTION

            <變量定義語句>

        END DECLARE SECTION

    *) 所有主變量和指示變量必須在上述格式中進行說明。說明之后,主變量可以在SQL語句中任何一個能夠使用表達式的地方出現;

    *) 為了與數據庫對象名(表名、視圖名、列名等)區別,SQL語句中的主變量名前要加冒號(:)作為標志。同樣,SQL語句中的指示變量前也必須加冒號標志,并且要緊跟在所指主變量之后;而在SQL語句之外,主變量和指示變量均可以直接引用,不必加冒號。

 
 

 三、游標

(1)概念

    一般情況下,SELECT語句查詢結果都是多條記錄,而主語言是面向記錄的,一組主變量一次只能存放一條記錄。

    所以僅使用主變量并不能完全滿足SQL語句向應用程序輸出數據的要求,為此嵌入式SQL引入了游標的概念,用游標來協調SQL語言與主語言這兩種不同的處理方式。即以游標機制作為橋梁,將多條記錄一次一條送至宿主程序處理,從而把對集合的操作轉換為對單個記錄的處理。

    “游標”是系統為用戶開設的一個數據緩沖區,存放SQL語句的執行結果。每個游標區都有一個名字。用戶可以用SQL語句逐一從游標中獲取記錄,并賦給主變量,交由主語言進一步處理。

 

(2)游標的使用方法

    通常需要包括四個操作:

    說明游標、打開游標、推進游標指針并取當前記錄、關閉游標。
 

 詳細信息…
 

 說明游標:

   用DECLARE語句為一條SELECT語句定義游標。DECLARE語句的一般形式為:


      EXEC SQL DECLARE <游標名> CURSOR FOR <SELECT語句>;


   其中SELECT語句可以是簡單查詢,也可以是復雜的連接查詢和嵌套查詢。
定義游標僅僅是一條說明性語句,這時DBMS并不執行SELECT指定的查詢操作。

打開游標:

    用OPEN語句將上面定義的游標打開。OPEN語句的一般形式為:


       EXEC SQL OPEN <游標名>;


    打開游標實際上是執行相應的SELECT語句,把所有滿足查詢條件的記錄從指定表取到緩沖區中。這時游標處于活動狀態,指針指向查詢結果集中第一條記錄。

推進游標指針并取當前記錄:

    用FETCH語句把游標指針向前推進一條記錄,同時將緩沖區中的當前記錄取出來出來送至主變量供主語言進一步處理。FETCH語句的一般形式為:


   EXEC SQL FETCH <游標名> 

       INTO <主變量>[<指示變量>][,<主變量>[<指示變量>]]...;


     其中主變量必須與SELECT語句中的目標列表達式具有一一對應關系。
     FETCH語句通常用在一個循環結構中,通過循環執行FETCH語句逐條取出結果集中的行進行處理。
     為進一步方便用戶處理數據,現在許多關系數據庫管理系統對FETCH語句做了擴充,允許用戶向任意方向以任意步長移動游標指針,而不僅僅是把游標指針向前推進一行了。

關閉游標:

      用CLOSE語句關閉游標,釋放結果集占用的緩沖區及其他資源。CLOSE語句的一般形式為:
       EXEC SQL CLOSE <游標名>;
     游標被關閉后,就不再和原來的查詢結果集相聯系。但被關閉的游標可以再次被打開,與新的查詢結果相聯系。
 

 
綜合例子:給出帶有嵌入式SQL的一小段C程序。
 

 詳細信息…
 

  ……

 ……

 EXEC SQL INCLUDE SQLCA; ................(1) 定義SQL通信區
 EXEC SQL BEGIN DECLARE SECTION; ........(2) 說明主變量
    CHAR title_id(7);
    CHAR title(81);
    INT royalty;
 EXEC SQL END DECLARE SECTION;
 main()
 {
   EXEC SQL DECLARE C1 CURSOR FOR ...(3) 游標操作(定義游標)
   SELECT tit_id, tit, roy FROM titles;
                 /* 從titles表中查詢 tit_id, tit, roy */
   EXEC SQL OPEN C1; ..............(4) 游標操作(打開游標)
   for(;;)
    {
      EXEC SQL FETCH C1 INTO :title_id, :title, :royalty;
                ...........(5) 游標操作(推進游標指針)
                                   (將當前數據放入主變量)
      if (sqlca.sqlcode <> SUCCESS)

       ....(6) 利用SQLCA中的狀態信息決定何時退出循環
         break;
         printf("Title ID: %s, Royalty: %d", :title_id, :royalty);
         printf("Title: %s", :title);
                                   /* 打印查詢結果 */
   }
  EXEC SQL CLOSE C1;       ........(7) 游標操作(關閉游標)

 }
 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区福利| 亚洲国产欧美在线| 一区二区三区欧美在线观看| 午夜一区不卡| 91久久久久久久久| 亚洲视频你懂的| 久久一区二区三区超碰国产精品| 欧美精品一区二区三区视频| 国产一区二区三区免费在线观看| 一区二区三区四区国产| 欧美成人久久| 久久免费精品视频| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲国产精品va在线看黑人| 亚洲第一福利社区| 欧美在线电影| 久久午夜激情| 亚洲国产日韩欧美综合久久| 亚洲精品免费网站| 国产精品麻豆成人av电影艾秋| 久久久久久91香蕉国产| 麻豆精品国产91久久久久久| 亚洲精品一区二区三区av| 亚洲欧美一区二区在线观看| 一区二区三区在线不卡| 蜜臀av性久久久久蜜臀aⅴ| 亚洲欧美www| 国产精品欧美一区二区三区奶水 | 一区二区三区在线观看欧美| 欧美高清视频一区二区三区在线观看| 免费视频一区二区三区在线观看| 久久九九精品99国产精品| 国产亚洲亚洲| 一区二区三区**美女毛片| 国语自产偷拍精品视频偷 | 亚洲与欧洲av电影| 久久久久www| 久久久久久国产精品mv| 国产亚洲欧美在线| 欧美精品久久99久久在免费线| 香蕉免费一区二区三区在线观看| 国产小视频国产精品| 午夜国产一区| 卡一卡二国产精品| 精品91在线| 亚洲欧美日韩精品久久久| 亚洲精品视频免费观看| 亚洲在线观看免费视频| 在线亚洲欧美专区二区| 亚洲人精品午夜在线观看| 欧美成人免费全部| 久久精品国产清高在天天线 | 在线一区日本视频| 欧美日韩高清在线一区| 这里只有精品视频| 欧美日韩一区三区四区| 最近中文字幕mv在线一区二区三区四区 | 欧美大胆a视频| 欧美日韩在线视频一区| 午夜精品久久| 亚洲欧美日韩视频一区| 国产婷婷色一区二区三区在线| 先锋亚洲精品| 亚洲欧洲一区二区三区久久| 亚洲在线不卡| 亚洲国产日韩一区二区| 欧美大片一区二区| 性一交一乱一区二区洋洋av| 欧美中文字幕视频| 国产欧美一区二区三区视频| 亚洲欧美日韩综合| 亚洲最新视频在线播放| 欧美激情精品久久久久久免费印度| 亚洲资源av| 亚洲黄网站黄| 国产一区二区视频在线观看| 欧美人体xx| 久久久久久久综合狠狠综合| 亚洲欧美国产视频| 一区二区三区国产精品| 亚洲理伦电影| 亚洲精品久久久久久久久久久久| 久久久久久久综合狠狠综合| 欧美一区二区三区免费视频| 伊人久久婷婷色综合98网| 免费观看一级特黄欧美大片| 久久免费精品日本久久中文字幕| 午夜在线成人av| 亚洲视频第一页| 欧美韩国日本综合| 亚洲一二区在线| 欧美va日韩va| 欧美一站二站| 一区二区三区免费看| 国产欧美日韩在线观看| 欧美岛国在线观看| 久久久人成影片一区二区三区观看| 亚洲高清视频中文字幕| 亚洲第一毛片| 国产婷婷色一区二区三区在线 | 亚洲黑丝在线| 亚洲第一网站| 亚洲一区二区三区精品在线观看| 亚洲午夜高清视频| 性亚洲最疯狂xxxx高清| 乱码第一页成人| 久久综合久色欧美综合狠狠 | 午夜精品成人在线| 久久久久国色av免费观看性色| 国产主播一区二区三区| 国产精品国产亚洲精品看不卡15| 国产区亚洲区欧美区| 在线激情影院一区| 欧美一激情一区二区三区| 欧美大片va欧美在线播放| 一区二区三区你懂的| 久久综合网络一区二区| 国产精品黄色| 国产亚洲免费的视频看| 国产日韩欧美91| 国产亚洲欧美日韩在线一区| 在线精品国产成人综合| 夜夜躁日日躁狠狠久久88av| 久久综合999| 一区二区三区视频在线观看| 免费观看久久久4p| 亚洲直播在线一区| 欧美日韩在线观看一区二区三区 | 国产精品videosex极品| 亚洲另类视频| 亚洲国产成人91精品| 免费久久99精品国产自在现线| 国产亚洲欧美日韩在线一区| 久久国产精品亚洲va麻豆| 亚洲欧美亚洲| 好吊色欧美一区二区三区视频| 久久精品国产亚洲5555| 久久精品一区二区国产| 在线观看欧美黄色| 在线一区日本视频| 午夜精品久久久久久99热软件| 国产欧美一区二区精品性| 日韩视频免费观看高清完整版| 国产性天天综合网| 亚洲欧美制服中文字幕| 亚洲一区激情| 国产欧美日韩一区| 狼人社综合社区| 欧美日韩高清在线观看| 99re国产精品| 欧美激情第五页| 欧美亚洲网站| 欧美激情亚洲另类| 久久精品免费看| 午夜久久久久久| 亚洲免费视频网站| 久久国产精品久久久| 亚洲人妖在线| 99re这里只有精品6| 国产欧美大片| 久久影院午夜片一区| 国产欧美日本一区视频| 亚洲黄色性网站| 亚洲第一中文字幕在线观看| 亚洲午夜高清视频| 亚洲免费观看高清完整版在线观看| 亚洲欧美国产高清| 久久精品人人做人人综合| 欧美日韩p片| 在线精品视频免费观看| 91久久精品美女| 欧美午夜大胆人体| 一区二区三区你懂的| 99国产精品久久久久久久成人热| 久久黄色网页| 六月婷婷一区| 在线不卡中文字幕| 午夜亚洲性色福利视频| 亚洲摸下面视频| 国产精品毛片高清在线完整版| 亚洲人成毛片在线播放女女| 一区免费在线| 性8sex亚洲区入口| 亚洲成人资源| 99在线精品视频| 欧美日韩午夜剧场| 午夜精品区一区二区三| 久久精品女人的天堂av| 在线日韩欧美| 欧美日韩国产美| 亚洲视频一区二区在线观看| 翔田千里一区二区| 在线免费观看日韩欧美| 欧美成人tv| 亚洲电影自拍| 久久色在线观看| 亚洲新中文字幕| 黑人巨大精品欧美一区二区| 欧美激情bt| 久久成人这里只有精品|