精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用CLI開發DB2存儲過程的實例

數據庫
一般意義上,DB2為存儲過程的編寫提供了三種方式:第一種是嵌入式SQL編程;第二種是CLI編程;第三種是純SQL編程。本文對使用CLI來開發DB2存儲過程進行了詳述,并附開發實例,供您參考。

存儲過程是使用大型關系型數據庫DB2進行開發時,考慮最多的關鍵問題之一。本文對使用CLI來開發DB2存儲過程進行了詳述,并附開發實例,供您參考。#t#

■DB2存儲過程

存儲過程(Store Procedure)是Client/Server應用中的一種編程方式,主要是為了解決客戶端應用訪問數據庫時可能出現的網絡負擔過重的問題。

  一般意義上,DB2為存儲過程的編寫提供了三種方式(不包括直接使用DB2的Store Procedure Builder生成的方式):第一種是嵌入式SQL編程;第二種是CLI編程;第三種是純SQL編程。本文將重點介紹CLI編程。

■CLI編程

CLI(Call Level Interface)編程是DB2提供的一種編寫動態數據庫讀寫程序的方式。在CLI編程中,所有SQL語句都通過DB2提供的一組C語言函數來執行,因此可以在Visual Studio中直接開發。下面,我們首先要簡單介紹一下CLI的工作過程和方式。

CLI程序主要由三個部分組成:首先是環境變量初始化過程,其次是語句的執行,最后是環境變量的釋放。我們將通過一個具體的例子來討論這三個過程。

■開發實例

該例子的數據庫是DB2可以自動生成的Sample庫,例子所完成的操作是從數據庫中獲取ID等于輸入參數值的員工姓名,例子的整個過程雖然非常簡單,但已經包含了CLI編程的基本思路和步驟。

1. 初始化環境變量

在CLI中有三個句柄,分別是環境句柄、連接句柄、語句句柄。在初始化過程中首先要對前兩個句柄逐一進行獲取,獲取成功后可連接數據庫并獲取第三個句柄。

SQLRETURN ret;

SQLHENV henv; // 環境句柄

SQLHDBC hdbc; // 連接句柄

SQLHSTMT hstmt; // 語句句柄

SQLCHAR DBNAME[]="SAMPLE"; //數據庫名#p#

SQLCHAR USERNAME[]="db2admin"; // 用戶名

SQLCHAR PSW[]="ibmdb2"; // 口令

ret=SQLAllocEnv(&&henv) //分配環境句柄

ret=SQLAllocConnect(henv,&&hdbc)

//分配連接句柄

ret=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,SQL_AUTOCOMMIT_OFF)

//設置連接屬性

ret=SQLConnect(hdbc,DBNAME,SQL_NTS,USERNAME,SQL_NTS,PSW,SQL_NTS) //連接數據庫

ret=SQLAllocStmt(hdbc,&&hstmt)

//分配語句句柄

上面的每個函數都有返回值,如果函數成功,ret值為SQL_SUCCESS,否則將返回錯誤代碼。

2. 語句的執行

語句的執行分四個階段:首先準備數據接收的緩沖區,然后執行準備好的SQL語句,第三步是將語句句柄和數據緩沖區進行綁定,最后獲取數據。程序如下:

char RowBuffer[100][200];

//數據緩沖區,其大小可自定義

typedef struct sqldat

{ SQLCHAR ColumnName[50];#p#

SQLSMALLINT BufferLength;

SQLSMALLINT NameLength;

SQLSMALLINT DataType;

SQLUINTEGER ColumnSize;

SQLSMALLINT FAR DecimalDigitsPtr;

SQLSMALLINT FAR NullablePtr;

} sqldata;

// 為第三步的綁定準備一個數據結構

sqldata RowDesc[100];

//用于綁定的變量,維數與緩沖區對應

memset(RowBuffer,64,100200);

//給緩沖區賦初始值,可以用于最后判斷是否真正從數據庫中獲取了數據,這一步也可以省略

char tempsql[100];

sprintf(tempsql,"select NAME from db2admin.STAFF where ID= %s ",Condition);

// Condition為變量值,可由用戶輸入

sql=(SQLCHAR ) tempsql;

ret=SQLPrepare(hstmt,sql,SQL_NTS)

// 執行準備#p#

ret=SQLExecute(hstmt) // 執行

執行成功后可進行綁定過程

SQLINTEGER nullindicator;

SQLINTEGER displaysize[MAX_COLUMN];

SQLSMALLINT i;

SQLSMALLINT num_columns;

SQLNumResultCols(hstmt,&&num_columns);

//準備綁定用的相關變量

for(i=1;i< =num_columns;i++)

{

RowDesc[i-1].BufferLength=200;#p#

SQLDescribeCol(hstmt,i, RowDesc[i-1].ColumnName,RowDesc[i-1].BufferLength,&&(RowDesc[i-1].NameLength),&&(RowDesc[i-1].DataType),&&(RowDesc[i-1].ColumnSize),RowDesc[i-1].DecimalDigitsPtr,RowDesc[i-1].NullablePtr);

SQLColAttribute(hstmt,(SQLSMALLINT)(i),SQL_DESC_DISPLAY_SIZE,NULL,0,NULL,&&displaysize[i-1]);

RowDesc[i-1].ColumnSize=max(displaysize[i-1],strlen((char)RowDesc[i-1].ColumnName))+1;

SQLBindCol( hstmt, (SQLSMALLINT)i,

SQL_C_CHAR,(SQLPOINTER)(RowBuffer[i-1]),RowDesc[i-1].ColumnSize,

&&nullindicator);

}//循環綁定

//綁定完成后,可以將數據讀至緩沖區

while(SQLFetch(hstmt)!=SQL_NO_DATA)

{

// SQLFetch函數將已經獲取的數據存入緩沖區

//此處的操作方式與ESQL中的游標類似,支持對結果集的操作

//每執行一次SQLFetch函數會把當前獲取的一行數據讀到緩沖區中

//RowBuffer[i]中將存放該行的第i 列數據值

//本例中只有一行數據

}

char m_name[10];

memcpy(m_name,RowBuffer[0],10);

//從緩沖區中將結果讀到用戶變量中#p#

3. 釋放環境變量

在數據獲取完成后,可以將環境變量釋放掉,但要注意釋放的先后順序。

SQLFreeStmt(hstmt,SQL_DROP);

// 釋放語句句柄

SQLDisconnect(hdbc);//與數據庫斷開

SQLFreeConnect(hdbc);//釋放連接句柄

SQLFreeEnv(henv);//釋放環境句柄

經過上面的步驟,就完成了對數據庫的讀取過程。

4. 生成目標存儲過程

從上面的過程看,CLI編程無疑是非常復雜的,但如果我們使用一些輔助手段來組織整個過程,其編程過程和調試步驟將會大大簡化。本文的例子使用了微軟的Visual Studio 6.0來幫助組織。在Visual C++中用Wizard生成一個DLL工程,然后將數據庫的初始化、綁定、釋放三個過程函數化,并在相應的地方調用函數。在調試時只需針對語句的執行部分,合適的調試方式是不直接生成DLL,而先生成一個普通的EXE工程來完成所需的工作,待調試成功后將相關代碼移到DLL工程中。過程函數化的另一個好處是在編寫多個存儲過程時代碼重用率高,對于剛才提到的這種調試方式也很有利。使用Visual C++的優點還有編譯和鏈接過程簡單,不用在命令行的方式下操作,也不需要去記憶許多復雜的參數。不過要記住將db2cli.lib包含進工程中,否則在鏈結過程中會有錯誤,還要做的一件事是按DLL工程中的要求編輯工程中的def文件以提供函數的可調用出口。

在DLL生成并調試通過后,剩下的工作與ESQL編程方式中的相應階段類似,要手工編輯一個DB2文件并執行它,這里就不再復述了。
 

責任編輯:段燃 來源: C++博客
相關推薦

2010-08-31 15:39:25

DB2存儲過程

2010-11-03 10:35:45

DB2存儲過程

2010-09-01 15:09:41

DB2動態游標

2010-08-18 13:29:11

DB2存儲過程

2010-11-03 10:46:49

DB2存儲過程

2010-11-03 10:26:22

DB2存儲過程

2010-08-05 10:42:33

DB2 拉鏈表存儲過程

2011-08-10 17:00:45

DB2數據庫存儲過程

2011-04-15 13:21:41

DB2翻頁存儲

2010-11-04 12:00:59

db2存儲過程

2010-08-10 15:30:21

2010-08-18 13:59:04

DB2純SQL存儲過程

2010-09-06 10:54:52

DB2 sql 存儲過

2010-11-03 11:02:34

DB2存儲過程

2009-03-10 09:08:06

DB2存儲過程實施

2010-09-06 10:43:15

DB2 SQL存儲過程

2010-08-04 09:56:44

2010-08-05 11:08:27

DB2存儲過程

2010-11-03 14:05:58

DB2離線備份

2010-08-05 14:34:26

DB2存儲過程
點贊
收藏

51CTO技術棧公眾號

国产精品亚洲一区二区无码| 国产传媒欧美日韩| 国产精成人品免费观看| 欧美电影网址| 国产精品久久777777| 成人激情在线播放| 国产污片在线观看| 国产一区二区三区不卡视频网站| 欧美日韩精品一区二区在线播放 | 亚洲精品一区二区三区新线路| 影音先锋久久久| 国产亚洲精品高潮| 青青草精品在线| 涩涩在线视频| 国产v日产∨综合v精品视频| 啪一啪鲁一鲁2019在线视频| 日本裸体美女视频| 黄色成人美女网站| 欧美日韩不卡一区二区| 日本一区二区三区国色天香| 色偷偷91综合久久噜噜| 极品白嫩的小少妇| 巨胸喷奶水www久久久| 一区二区三区不卡在线观看| 欧洲亚洲一区二区| 成人激情四射网| 日韩高清不卡一区二区| 欧美激情按摩在线| 99国产精品无码| 欧美自拍一区| 日韩欧美国产小视频| 国产成人精品视频免费看| 久久日韩视频| 国产农村妇女毛片精品久久麻豆| 国产精品99久久久久久久| 在线观看中文字幕网站| 国产视频欧美| 久久久久久成人| 性生交大片免费全黄| 神马电影久久| 日韩成人小视频| 国产成人av片| 国产一区二区三区免费观看在线| 欧美性色黄大片手机版| 乱妇乱女熟妇熟女网站| 欧美78videosex性欧美| 亚洲天堂精品视频| 亚洲欧美丝袜| 国产69久久| 欧美三日本三级少妇99| 国产一区丝袜| 日韩欧美一级精品久久| 不卡的av中文字幕| 日韩一级二级| 91国偷自产一区二区使用方法| 久久久久久久久久久99| 黄色成人在线网| 一区二区三区在线免费| 中文字幕免费在线不卡| 色综合久久久久综合一本到桃花网| 久久久久久电影| 精品一区日韩成人| 天天色综合av| 99久久伊人精品| 国产精品一区视频网站| 亚洲精品国产片| 国产一区91精品张津瑜| 亚洲bt欧美bt日本bt| 国产精品欧美激情在线| 国产一区二区三区免费观看| 国产精品一区二区久久精品| 伊人网中文字幕| 美日韩一区二区三区| 欧美三区不卡| 色先锋资源久久综合5566| 少妇的滋味中文字幕bd| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 147欧美人体大胆444| www.热久久| proumb性欧美在线观看| 免费成人深夜夜行视频| 番号集在线观看| 一色桃子久久精品亚洲| 国产美女视频免费| 黄污视频在线观看| 亚洲成人动漫一区| 黄色a级片免费| 99re久久| 色诱色偷偷久久综合| 中文一区二区完整视频在线观看| 亚洲图片都市激情| 黄色网址在线免费观看| 亚洲一区二区三区三| 凹凸国产熟女精品视频| 福利视频亚洲| 精品欧美一区二区久久 | 久久这里只有精品首页| 日韩一区免费观看| av免费网站在线| 精品久久久久久中文字幕一区奶水 | 黄色av网站在线| 国产精品久久久久影院色老大 | 亚洲少妇一区| 国产精品自在线| 欧美特级特黄aaaaaa在线看| 久久综合99re88久久爱| 男同互操gay射视频在线看| 欧美videossex| 欧美亚洲国产一区在线观看网站| 国产传媒免费观看| 欧美aaaaaaaa牛牛影院| www.xxxx精品| 看片网址国产福利av中文字幕| 老司机精品视频导航| 精品91免费| 亚洲成人a**址| 亚洲精品97久久中文字幕无码| 国产清纯美女被跳蛋高潮一区二区久久w| 妞干网这里只有精品| 午夜精品久久久久久久久久蜜桃| 日韩欧美中文一区| 国产精品情侣呻吟对白视频| 亚洲经典三级| 亚洲专区国产精品| 69xxxx欧美| 欧美性xxxxx极品| 91精产国品一二三| 国产高清欧美| 国产精品久久久久久久久影视 | 国产在线不卡一卡二卡三卡四卡| 欧美久久久久久久| 成人免费图片免费观看| 欧美一级夜夜爽| 久操视频在线观看免费| 在线综合亚洲| 国产私拍一区| 里番在线播放| 日韩视频不卡中文| www.97视频| 蜜桃av噜噜一区二区三区小说| 在线观看日韩一区| 韩日视频在线观看| 欧美1区2区3| 日日摸夜夜添一区| 国产精品xxxxxx| 久久精品网站免费观看| 能在线观看的av| 极品国产人妖chinesets亚洲人妖| 久久99热精品| 国产高清在线免费| 亚洲情趣在线观看| 国产欧美激情视频| 久久亚洲精品中文字幕蜜潮电影| 国产精品成人播放| 国产九色在线| 在线观看日韩毛片| 影音先锋男人在线| 视频一区国产视频| 日本一区二区三区四区高清视频| 亚洲美女尤物影院| 亚洲精品综合久久中文字幕| 日韩av大片在线观看| 99国内精品久久| 亚洲爆乳无码专区| 精品成人影院| 国产精品毛片a∨一区二区三区|国| 国产在线视频福利| 欧美婷婷六月丁香综合色| 欧美电影免费提供在线观看| aa一级黄色片| 校园激情久久| 日本一区二区三区免费看| 欧美日韩五区| 久久久成人av| 午夜久久久久久噜噜噜噜| 亚洲香蕉伊在人在线观| 香港三日本8a三级少妇三级99| 国产欧美在线| 日韩av图片| 欧美视频免费看| 欧美另类高清videos| 色网站免费观看| 色婷婷精品久久二区二区蜜臂av | 欧洲熟妇精品视频| 久久电影院7| 99re在线观看| 免费福利视频一区二区三区| 中文字幕亚洲无线码a| 国产chinasex对白videos麻豆| 亚洲国产精品久久久男人的天堂| 亚洲精品色午夜无码专区日韩| 日韩电影免费在线观看网站| 在线电影中文日韩| 日本xxxxxxxxxx75| 日韩影视高清在线观看| 国产精品丝袜白浆摸在线| 三级网站视频在在线播放| 亚洲乱码国产乱码精品精| 6—12呦国产精品| 亚洲aaa精品| 可以免费看av的网址| 成人自拍视频在线| 四季av一区二区| 亚洲视频一二| 亚洲国产欧美一区二区三区不卡| 99久久婷婷国产综合精品青牛牛| 国产精品69精品一区二区三区| 午夜伦理在线视频| 国产亚洲欧美日韩精品| 精品久久人妻av中文字幕| 91久久线看在观草草青青 | 亚洲国产综合人成综合网站| 91中文字幕永久在线| 国产精品1024久久| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 欧美色一级片| 亚洲精品欧洲精品| 欧美有码在线| www国产亚洲精品| 欧美男男gaygay1069| 91国内免费在线视频| 精品久久久久久久久久中文字幕| 成人黄色毛片| 97在线观看免费| 宅男网站在线免费观看| 中文字幕亚洲天堂| 欧美少妇另类| 亚洲国产成人av在线| 国产成人精品a视频| 欧美三级日韩三级| 午夜一区二区三区四区| 岛国视频午夜一区免费在线观看| 久久婷婷综合国产| 亚洲欧美电影一区二区| 性少妇xx生活| 中文字幕精品一区二区三区精品| 少妇大叫太粗太大爽一区二区| 成人自拍视频在线| 国产ts在线观看| 国模一区二区三区白浆| 亚洲欧美自拍另类日韩| 日韩精品一二三| 成年人视频观看| 在线观看视频免费一区二区三区| 女女百合国产免费网站| 97精品在线| 伊甸园精品99久久久久久| 狠狠操综合网| 日本一区二区免费看| 精品国产一区二区三区香蕉沈先生| 麻豆av一区二区三区久久| 人体久久天天| 麻豆精品蜜桃一区二区三区| 九九亚洲精品| 日韩精品一区二区三区外面| 欧美色图国产精品| 日本一区高清不卡| 欧美日韩中文字幕一区二区三区| 日本最新一区二区三区视频观看| 精品国产99| 五月天色一区| 91久久夜色精品国产按摩| 综合色婷婷一区二区亚洲欧美国产| 色综合色综合| 九九久久九九久久| 国产精品sm| 国产九九九九九| 国产免费福利视频| 日韩一区欧美一区| 精品国产乱码久久久久久鸭王1 | 亚洲永久一区二区三区在线| 天天综合亚洲| 欧妇女乱妇女乱视频| 99精品国产福利在线观看免费| 国产中文字幕二区| 日韩高清不卡在线| 色18美女社区| 处破女av一区二区| 精品少妇人妻一区二区黑料社区| 久久精品视频在线看| 1024在线看片| 一区二区三区四区在线播放| 日韩黄色三级视频| 色综合一区二区三区| 一区二区国产欧美| 精品区一区二区| 国内av一区二区三区| 日韩在线播放av| 污影院在线观看| 欧美一区二区三区精品电影| 成人黄色免费观看| 国产精品久久久久久久天堂第1集| 日本一区福利在线| 在线码字幕一区| 一区视频在线| 亚洲一级免费观看| 成人晚上爱看视频| 伊人影院综合网| 亚洲激情成人在线| 成人毛片视频网站| japanese23hdxxxx日韩| 国产在线999| 另类ts人妖一区二区三区| 日本一区精品| 狠狠入ady亚洲精品经典电影| 国产精品人人妻人人爽人人牛| 国产综合色产在线精品 | 国产亚洲一区二区三区| 国产精品免费人成网站酒店| 精品国产精品自拍| 国产深喉视频一区二区| 亚洲女人天堂视频| 在线免费观看污| 国产精品久久久久不卡| 亚洲一二av| 亚洲欧洲精品在线观看| 国产精品久久国产愉拍| 欧美一级免费在线| 久久久精品综合| 国产亚洲欧美精品久久久久久| 欧美体内she精视频| 神马午夜精品95| 久久在线视频在线| 写真福利精品福利在线观看| 国产精品免费在线 | 91在线视频官网| caoporn91| 欧美丝袜丝nylons| 婷婷五月综合激情| 欧美国产日本高清在线 | 国产一区二区精品在线| 五月久久久综合一区二区小说| 动漫av免费观看| 91亚洲精品一区二区乱码| 欧美日韩精品亚洲精品| 欧美日韩成人一区| 五月天av网站| 亚洲日本黄色| 牛夜精品久久久久久久| 91偷拍与自偷拍精品| 日本熟妇乱子伦xxxx| 日韩欧美综合一区| www久久日com| 成人久久18免费网站图片| sdde在线播放一区二区| 777米奇影视第四色| av在线这里只有精品| 日本熟伦人妇xxxx| 精品日韩99亚洲| 欧美草逼视频| 999视频在线观看| 亚洲免费二区| 欧美日韩理论片| 亚洲精品你懂的| 国产人妖在线播放| 超碰97人人做人人爱少妇| 91嫩草国产线观看亚洲一区二区 | 久久精品一区二区不卡| 午夜精品中文字幕| 国产精品电影一区二区三区| 中文字幕+乱码+中文乱码91| 欲色天天网综合久久| 丁香久久综合| 天天爱天天做天天操| 国产一区二区看久久| 欧美黄片一区二区三区| 亚洲精品在线一区二区| 岛国av在线网站| 免费国产一区二区| 视频一区二区中文字幕| 阿v天堂2014| 欧美日韩精品专区| av网站免费在线观看| 97在线资源站| 国产一级片免费看| 欧亚洲嫩模精品一区三区| 成年人视频在线看| 成人av在线亚洲| 欧美三级网页| 女同毛片一区二区三区| 日本二三区不卡| 老司机午夜在线视频| 波多野结衣精品久久| 国产精品一二| 成人一级片免费看| 日韩免费看网站| 日本蜜桃在线观看视频| 日韩不卡av| 国产真实精品久久二三区| 国产在线视频在线观看| 亚洲欧美中文在线视频| 亚洲视频资源| 欧美一级片免费播放| 国产亚洲福利社区一区| 国产精品国产av| 97精品一区二区三区| 欧美日韩水蜜桃| 国产伦精品一区二区三区88av| 色素色在线综合| 日韩三级电影视频|