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

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>
            一区二区三区免费网站| 亚洲免费电影在线观看| 欧美v国产在线一区二区三区| 一本色道久久综合狠狠躁篇的优点 | 亚洲私人影院在线观看| 一区二区激情视频| 一区二区不卡在线视频 午夜欧美不卡' | 国产欧美日韩中文字幕在线| 国产精品视频免费观看| 国产欧美激情| 精品69视频一区二区三区| 亚洲第一综合天堂另类专| 亚洲免费观看高清完整版在线观看熊 | 久久精品中文字幕一区| 久久se精品一区二区| 久久亚洲二区| 亚洲国产欧美一区二区三区同亚洲 | 在线天堂一区av电影| 亚洲小说区图片区| 久久久99久久精品女同性 | 亚洲精品小视频| 亚洲一区二区三区久久| 久久成人免费网| 免费成人黄色| 国产精品a久久久久久| 国内精品视频在线播放| 夜夜夜久久久| 久久婷婷av| 99精品国产一区二区青青牛奶| 亚洲欧美不卡| 欧美激情综合色| 国产午夜久久| 亚洲久久一区| 久久久九九九九| 日韩视频在线免费| 久久久亚洲高清| 国产精品亚洲精品| 亚洲精品一区中文| 久久成人亚洲| 99视频精品全部免费在线| 欧美在线亚洲在线| 欧美视频网址| 激情一区二区三区| 亚洲欧美日本国产有色| 亚洲国产精品成人久久综合一区| 午夜国产精品影院在线观看 | 欧美激情 亚洲a∨综合| 亚洲综合导航| 亚洲综合丁香| 国产精品一区二区三区久久久| 国产亚洲一二三区| 一区二区三区欧美成人| 美女精品在线观看| 亚洲香蕉在线观看| 欧美乱大交xxxxx| 狠狠色综合色区| 小嫩嫩精品导航| 91久久在线播放| 狼人天天伊人久久| 国内精品模特av私拍在线观看| 亚洲午夜国产成人av电影男同| 欧美xart系列高清| 久久久五月婷婷| 激情欧美一区二区三区在线观看| 欧美一区二区精美| 亚洲一二三区在线| 国产精品成人久久久久| 艳妇臀荡乳欲伦亚洲一区| 欧美国产第一页| 噜噜噜91成人网| 亚洲精品国精品久久99热一| 欧美黄色片免费观看| 免费91麻豆精品国产自产在线观看| 国产在线视频不卡二| 久久久不卡网国产精品一区| 亚洲欧美视频一区二区三区| 国产欧美日韩一区二区三区在线 | 欧美三级第一页| 欧美金8天国| 国产精品99久久久久久久女警 | 国产亚洲精品高潮| 老牛嫩草一区二区三区日本| 两个人的视频www国产精品| 亚洲精品乱码久久久久久| 亚洲国产天堂久久综合网| 欧美日韩另类视频| 欧美一区二区视频在线观看2020| 性欧美xxxx大乳国产app| 亚洲国产日韩欧美综合久久| 日韩亚洲欧美一区| 国产一区二区久久久| 欧美激情二区三区| 国产精品高清免费在线观看| 久久人人精品| 欧美精品观看| 久久精品视频网| 欧美日韩国产精品自在自线| 欧美一区二区三区在线| 裸体歌舞表演一区二区| 亚洲免费在线精品一区| 麻豆av一区二区三区| 亚洲婷婷免费| 久久亚洲精品一区二区| 一区二区日韩| 欧美一区二区在线视频| 亚洲免费成人av| 中文日韩欧美| 亚洲精品黄网在线观看| 一本一本久久| 国产一区二区三区精品久久久| 亚洲黄色在线看| 国产精品久久久久av免费| 欧美专区亚洲专区| 免费一级欧美片在线播放| 一区二区福利| 亚洲大片一区二区三区| 国产日本欧美一区二区三区| 美女久久网站| 国产精品成人观看视频免费| 久久婷婷av| 欧美日本在线看| 99视频日韩| 欧美电影资源| 欧美一区二区性| 欧美 日韩 国产精品免费观看| 亚洲一区二区高清| 久热国产精品| 亚洲国产婷婷香蕉久久久久久| 欧美中文字幕视频| 亚洲剧情一区二区| 美女久久一区| 欧美丝袜第一区| 欧美大尺度在线| 欧美精品日韩综合在线| 欧美激情aaaa| 国产伦精品一区二区三区高清| 亚洲精品影院在线观看| 亚洲欧美国产三级| 一本到12不卡视频在线dvd| 久久免费国产| 久久av红桃一区二区小说| 欧美精品在线观看91| 美女诱惑一区| 欧美一区二区三区播放老司机| 一区二区三区四区五区视频| 久久久久一区| 亚洲第一主播视频| 伊人久久婷婷色综合98网| 亚洲欧美日韩综合国产aⅴ| 一区二区欧美在线| 欧美精品久久久久久久免费观看 | 国产精品美女久久久| 亚洲精品久久久一区二区三区| 国产一区二区三区在线观看免费| 99精品99| 一区二区三区四区蜜桃| 老司机精品视频网站| 一区二区国产精品| 国产精品久久一区二区三区| 一本色道久久加勒比88综合| 日韩视频免费大全中文字幕| 欧美成人午夜剧场免费观看| 老**午夜毛片一区二区三区| 亚洲精品视频在线| 欧美福利视频网站| 亚洲激情黄色| 亚洲色在线视频| 欧美午夜片在线免费观看| 香蕉乱码成人久久天堂爱免费| 欧美一区2区三区4区公司二百| 国产精品国码视频| 亚洲永久精品国产| 欧美在线日韩精品| 欧美激情一区二区三区在线视频观看| 亚洲高清久久久| 亚洲精品国产精品乱码不99按摩| 欧美成人高清视频| 亚洲免费高清| 亚洲综合三区| 国产视频在线观看一区二区三区| 欧美一区二区在线免费播放| 久久婷婷亚洲| 亚洲精品视频在线观看网站| 国产农村妇女精品一二区| 欧美一级大片在线观看| 鲁大师成人一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 麻豆乱码国产一区二区三区| 欧美亚洲三区| 99国产麻豆精品| 国产精品一区免费在线观看| 亚洲小视频在线观看| 久久久久久久999精品视频| 国产精品网站在线观看| 欧美刺激午夜性久久久久久久| 99视频精品在线| 美女视频黄免费的久久| 一区二区三区四区五区精品| 欧美日本成人| 欧美jizz19性欧美|