精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

无码人妻一区二区三区在线视频| 成人avav在线| 亚洲欧美一区二区视频| 欧美激情亚洲自拍| 麻豆成人小视频| 欧美三级小视频| 欧美xnxx| 91视频国产资源| 欧美黑人性猛交| 亚洲一区二区三区四区五区| 亚洲人妻一区二区三区| 午夜日韩福利| 欧美午夜精品久久久| 精品不卡一区二区三区| 黄色一级视频免费| 久久久久亚洲精品中文字幕| 亚洲国产激情av| 国产第一区电影| 人妻大战黑人白浆狂泄| 黄色在线网站噜噜噜| 欧美日韩一区自拍| 51久久夜色精品国产麻豆| 色一情一区二区三区四区| 日韩精品久久久久久久| 一区二区三区四区视频免费观看| 一区二区三区日韩欧美| 国产日韩视频在线观看| 国产91丝袜美女在线播放| 性感女国产在线| 成人午夜在线免费| 91禁外国网站| 99久久免费看精品国产一区| av中文字幕电影在线看| www.视频一区| 欧洲成人免费aa| 美女100%无挡| 成人免费av电影| 中文字幕在线不卡一区| 91精品视频免费| 麻豆疯狂做受xxxx高潮视频| 精品国产乱码久久久久久1区2匹| 日本高清不卡视频| 午夜精品视频在线观看一区二区| 蜜桃在线一区二区| 老鸭窝毛片一区二区三区| 亚洲精品资源在线| 日韩黄色片视频| 你懂的视频在线观看| 香蕉久久久久久久av网站| 亚洲男人av电影| 亚洲福利精品视频| 欧美性videos| 国产精品一区二区免费不卡 | 中文字幕亚洲综合久久菠萝蜜| 久久免费视频1| 无码免费一区二区三区| 久久国产电影| 日韩色在线观看| 日韩少妇内射免费播放18禁裸乳| 国产精品一区二区三区四区色| 美女免费视频一区| 久久成人免费视频| 粉嫩av懂色av蜜臀av分享| 97成人资源| 日韩一区欧美小说| 警花观音坐莲激情销魂小说 | 亚洲精品在线观| 成人羞羞国产免费网站| 日本中文字幕在线2020| 成人免费视频网站在线观看| 成人av网站观看| 美日韩一二三区| 手机在线电影一区| 亚洲国产小视频| 婷婷免费在线观看| 182在线视频观看| 精品久久久久久国产91| 四虎影院一区二区| 欧美精品久久久久久久久久丰满| 91首页免费视频| 日韩精品久久一区| 午夜免费福利视频| 日韩中文欧美在线| 欧美激情乱人伦一区| 国产亚洲精品久久久久久无几年桃 | 日产精品久久久久久久性色| 麻豆精品新av中文字幕| 97超碰蝌蚪网人人做人人爽| 黑人一级大毛片| 久久一级电影| 九九热最新视频//这里只有精品| 国产精品20p| 国内自拍欧美| 日韩一级成人av| 中文字幕在线永久| 欧美综合久久| 亚洲色图国产精品| 熟妇高潮一区二区| 国产精品亚洲欧美一级在线| 欧美综合久久久| 国产精品伦理一区二区| 91av网站在线播放| 中文字幕日本视频| 亚洲一区成人| 国内精品久久久久影院优 | 国产精品日韩无码| 日韩不卡手机在线v区| 国产主播在线一区| 天天干,夜夜爽| 成人黄色网址在线观看| 日韩影片在线播放| 91超碰在线播放| 欧美色男人天堂| 日本中文字幕高清| 韩国成人漫画| 欧美电影免费提供在线观看| 欧美国产在线一区| 美女久久久久| 国产视频亚洲精品| 久久中文免费视频| 在线成人超碰| 亚洲成人精选| 色青青草原桃花久久综合| 97超碰在线免费观看| 你懂的亚洲视频| 国产精品美女免费| 亚洲欧美日韩一区二区三区四区| 丝袜国产日韩另类美女| 国产99在线|中文| 男人天堂视频在线| 成人午夜视频福利| 中文字幕一区二区三区四区五区人| 亚洲欧美韩国| 亚洲二区中文字幕| 法国伦理少妇愉情| 黄色另类av| 2019中文字幕在线免费观看| 成年人视频在线免费看| 国产精品18久久久久久久久久久久| 91日本视频在线| 成人高清免费在线播放| 亚洲欧美怡红院| 国产九九在线视频| 国产欧美日韩精品一区二区三区| 一区二区三区动漫| 欧美一区二区三区观看| 91不卡在线观看| 国产精品一二三在线| 国产色片在线观看| 97精品久久久午夜一区二区三区| 日本一区二区三区www| 免费观看久久久久| 欧美日韩久久久一区| 亚洲欧洲日本精品| 欧美丝袜一区| 国产精品男人的天堂| 韩日视频在线| 亚洲精品成a人| 四虎成人在线播放| 综合干狼人综合首页| 色999日韩欧美国产| 中文字幕在线观看免费| 顶级嫩模精品视频在线看| 青青草视频国产| 高清不卡亚洲| 亚洲天堂av在线播放| 免费在线观看av的网站| 欧美高清在线精品一区| 天堂av8在线| 欧美69视频| 国模精品娜娜一二三区| 夜级特黄日本大片_在线| 欧美三级资源在线| 免费成人深夜夜行网站| 亚洲少妇在线| 日本一区二区在线视频| 欧美视频免费看| 日韩精品欧美国产精品忘忧草| 午夜激情福利电影| 国产精品一二三在| 黄色成人在线看| 欧美成人福利| 九九热在线精品视频| 污视频在线免费观看| 91精品1区2区| 欧产日产国产v| 9久草视频在线视频精品| 国产成人精品无码播放| 999国产精品| 国产乱码精品一区二区三区卡| 男人天堂久久久| 日韩欧美成人激情| 91在线视频在线观看| 国产精品水嫩水嫩| 国产精品扒开腿做爽爽爽a片唱戏| 亚洲永久免费| 中文网丁香综合网| 欧美成人三级| 国内久久久精品| 18免费在线视频| 欧美亚洲国产一区二区三区va| 老司机成人免费视频| 日韩精品一级二级| 日韩一级特黄毛片| 蜜桃一区二区三区| 99理论电影网| 国产一区二区三区影视| 欧美精品国产精品日韩精品| www亚洲人| 亚洲精品久久在线| 国产女无套免费视频| 富二代精品短视频| 亚洲av无码成人精品国产| 麻豆精品视频在线观看| 国产精品69久久久| 国产精品99久久免费观看| 国产成人在线视频| 成人免费高清观看| 亚洲精品乱码久久久久久金桔影视 | 天天色综合av| 3d成人h动漫网站入口| 天堂网视频在线| 久久亚洲精品小早川怜子| 91黄色在线看| 亚洲激情五月| 丝袜美腿玉足3d专区一区| 精品国产一区二区三区不卡蜜臂| 性色av香蕉一区二区| 亚洲乱色熟女一区二区三区| 国产精品你懂的| 91精品国产自产| 久久福利毛片| 国产精品专区在线| 国产成人久久| 国内外成人免费视频| 香港久久久电影| 欧美一区二三区| a级大胆欧美人体大胆666| 久久91亚洲人成电影网站| 免费黄色网页在线观看| 色噜噜久久综合伊人一本| 国产高清视频在线| 一区二区三区动漫| 成人在线播放视频| 国产午夜一区二区| 99在线精品视频免费观看软件| 亚洲黄色录像片| 一区视频免费观看| 亚洲欧美日韩电影| 国产精品久久无码| 成人aaaa免费全部观看| 成人欧美精品一区二区| 亚洲影院免费| 69堂免费视频| 99久久www免费| 国产伦精品一区二区三区四区免费| 国产一区一区| www.一区二区三区| 草草视频在线一区二区| 国产精品久久久av| 9999在线视频| 98精品在线视频| 亚洲人成午夜免电影费观看| 欧美一级bbbbb性bbbb喷潮片| 都市激情综合| 国产精品主播视频| 国产精品一区二区三区www| 91免费看网站| 日韩免费小视频| 国产精品一区二区在线| а天堂中文最新一区二区三区| 91精品国产91久久久久久久久| 擼擼色在线看观看免费| 九九久久久久99精品| 98色花堂精品视频在线观看| 78m国产成人精品视频| 92国产精品| 国产精自产拍久久久久久| 99视频这里有精品| 国产女人水真多18毛片18精品 | 日本免费高清一区二区| 手机在线一区二区三区| 老司机激情视频| 亚洲综合二区| 九九精品久久久| 丁香网亚洲国际| 色屁屁草草影院ccyy.com| 亚洲人被黑人高潮完整版| 蜜桃精品成人影片| 国产精品麻豆99久久久久久| 欧美精品成人久久| 色8久久人人97超碰香蕉987| 一区二区三区免费观看视频| 在线这里只有精品| 国产片高清在线观看| 亚洲精品电影网在线观看| 91sp网站在线观看入口| 久久久久久久久久久久av| av有声小说一区二区三区| 亚洲影院污污.| 欧美成年网站| 欧美日本韩国国产| 欧美jizz19性欧美| 国产精品区一区二区三含羞草| 亚洲婷婷伊人| 欧美另类videosbestsex日本| 午夜亚洲性色视频| 女教师高潮黄又色视频| 国产精品99久久不卡二区| a级在线免费观看| 亚洲一线二线三线视频| 久久久国产精品黄毛片| 色香蕉成人二区免费| 天堂网免费视频| 欧美大片一区二区| 日本综合在线| 国产精品va在线播放| 成人午夜三级| 日本精品免费视频| 日韩一区欧美二区| 一级欧美一级日韩片| 亚洲欧洲综合另类在线| 最近中文字幕免费在线观看| 亚洲大胆人体av| 麻豆av免费在线观看| 国产精品电影观看| 四虎5151久久欧美毛片| 免费成人看片网址| 激情欧美一区二区三区| www.av毛片| 国产精品一品二品| 国产又粗又硬又长又爽| 欧美在线一区二区| 免费在线超碰| 欧美一区第一页| 国偷自产av一区二区三区| 97av中文字幕| 亚洲国产高清一区| 日韩av一二三四| 99视频一区二区| 国产精品二区一区二区aⅴ| 狠狠躁夜夜躁人人躁婷婷91| 亚洲国产中文字幕在线| 欧美成人免费一级人片100| 国内小视频在线看| 97se亚洲综合在线| 中文不卡在线| 无套白嫩进入乌克兰美女| 亚洲日本成人在线观看| 91丨九色丨丰满| 日韩在线视频观看正片免费网站| 成人看片网页| 亚洲电影免费| 亚洲国产欧美国产综合一区| 蜜桃视频无码区在线观看| av爱爱亚洲一区| 日韩字幕在线观看| 欧美日韩欧美一区二区| av中文字幕一区二区三区| 国产精品视频大全| 欧美激情偷拍自拍| 黄色一级片免费播放| 一区二区三区欧美日韩| 丁香花免费高清完整在线播放 | 一区二区三区短视频| 欧美激情视频一区二区三区| 久久一区欧美| 亚洲一级理论片| 偷拍一区二区三区| 免费a在线观看| 国产精品影片在线观看| 99视频精品全国免费| 被黑人猛躁10次高潮视频| 亚洲国产日日夜夜| 国产精品一区二区人人爽| 欧美成人免费全部| 精品按摩偷拍| 黄色永久免费网站| 亚洲激情一二三区| 亚洲av成人精品日韩在线播放| 国产精品jizz在线观看麻豆| 99精品在线| 最近日本中文字幕| 在线观看av不卡| 亚洲夜夜综合| 国产在线视频一区| 激情综合视频| 蜜桃av免费看| 制服丝袜亚洲色图| 僵尸再翻生在线观看| 亚洲国产日韩欧美| 成+人+亚洲+综合天堂| 超碰在线观看91| 欧美日韩国产二区| 国产欧美日韩| 中文字幕第九页| 欧美日韩激情在线| 美女的胸无遮挡在线观看| 亚洲欧洲国产精品久久| 波多野结衣一区二区三区|