Posted on 2006-03-07 23:58
天涯浪子 閱讀(935)
評論(0) 編輯 收藏 引用 所屬分類:
(二)C++高級部分——Pro*C部分
1.指示變量用于處理數(shù)據(jù)庫的NULL值,監(jiān)督和管理與其相關(guān)聯(lián)的宿主變量,是短整型變量(short).
2.一個指示變量只管理一個宿主變量,指示變量緊跟在宿主變量后面.
3.語法結(jié)構(gòu)有兩種方式:
(1):host_variable INDICATOR :indicator_varible
(2):host_variable : indicator_variable//習(xí)慣上常用此種方法
4.指示變量的作用:
主要用在輸出,即當(dāng)宿主變量用于接收數(shù)據(jù)庫的返回數(shù)據(jù)時.通過在宿主變量后用指示變量,
檢測是否返回了NULL.
-1:表示數(shù)據(jù)庫表列的值為NULL
=0:將原值原封不動的賦給宿主變量.
>0:將數(shù)據(jù)庫表列的值截斷后賦給宿主變量,指示變量值為該列值的原始長度.
5.指示變量的例子如下:
習(xí)慣上一般在聲明宿主變量的時候在其前面加v_,在聲明指示變量時候在其前面加ind_.
#include <iostream>
using namespace std;
EXEC SQL INCLUDE SQLCA;
//聲明宿主變量
EXEC SQL BEGIN DECLARE SECTION;
char pwd[ 30 ] ;
char v_l_name[ 100 ] ;
short ind_l_name ;
EXEC SQL END DECLARE SECTION;
int main(){
EXEC SQL WHENEVER SQLERROR STOP ;//說明對sqlerror的處理方式
//連接數(shù)據(jù)庫
cout<<"enter username and passwd>";
cin>>pwd ;
EXEC SQL CONNECT :pwd;
cout<<"connect db using "<< pwd<<" ok."<<endl;
EXEC SQL select last_name
into :v_l_name :ind_l_name
from emp
where id=1 ;
//通過指示變量來判斷宿主變量的值是否為NULL,并進(jìn)行輸出處理.
if( ind_l_name == -1 ){
cout<<"-- NULL --" << endl;
}else if( ind_l_name > 0 ){
cout<< v_l_name <<"..."<< endl;
}else{
cout<<"last name=>" << v_l_name << endl;
}
//完成SQL語句并釋放內(nèi)存.
EXEC SQL COMMIT WORK RELEASE ;
return 0 ;
}