Posted on 2006-03-07 23:58
天涯浪子 阅读(913)
评论(0) 编辑 收藏 引用 所属分类:
(二)C++高级部分——Pro*C部分
1.指示变量用于处理数据库的NULL值,监督和管理与其相关联的宿主变量,是短整型变量(short).
2.一个指示变量只管理一个宿主变量,指示变量紧跟在宿主变量后面.
3.语法结构有两种方式:
(1):host_variable INDICATOR :indicator_varible
(2):host_variable : indicator_variable//习惯上常用此种方法
4.指示变量的作用:
主要用在输出,即当宿主变量用于接收数据库的返回数据时.通过在宿主变量后用指示变量,
检测是否返回了NULL.
-1:表示数据库表列的值为NULL
=0:将原值原封不动的赋给宿主变量.
>0:将数据库表列的值截断后赋给宿主变量,指示变量值为该列值的原始长度.
5.指示变量的例子如下:
习惯上一般在声明宿主变量的时候在其前面加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的处理方式
//连接数据库
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,并进行输出处理.
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语句并释放内存.
EXEC SQL COMMIT WORK RELEASE ;
return 0 ;
}