作为输入变量时:(如insert ,update语句中)
=-1:OCI程序将NULL赋给
Oracle表的列,忽略占位符结合的程序变量值
>=0:应用程序将程序变量值赋给指定列
作为输出变量时:(如select语句中)
=-2:所读取的列数据长度大于程序变量的长度,则被截取。
=-1:所读取的值为NULL,输出变量的值不会被改变。
=0:数据被完整读入到指定的程序变量中
>0:所读取的列数据长度大于程序变量的长度,则被截取,指示符变量值为所读取数据被截取前的实际长度
三. OCI函数说明
注:红色为输入参数 蓝色为输出参数 ,否则为输入/出参数
示例以下面结构作为说明
sword swResult;
OCIBind* hBind;
OCIDefine* hDefine;
OCIStmt *stmtp
OCIError *errhp;
OCIStmt *stmtp
OCISvcCtx * svchp
OCIEnv * envhpp;
OCISession * usrhp;
sb2 sb2aInd[30]; //指示器变量,用于取可能存在空值的字段
Typedef strcut
{
char tname[40];
int age;
} t_std;
typedef struct
{
sb2 sb2_tname[100];
sb2 sb2_age[100];
} stdInd_T; //指示器数组
typedef struct
{
ub2 ub2_tname[100];
ub2 ub2_age[100];
} stdLen_T; //字段长度
t_std tstd[100]; //数组变量,用于批量操作
stdInd_T tstdInd;
stdLen_T tstdLen;
stdLen_T tstdRet;
t_std std;
各函数数明
1.创建OCI环境
sword OCIEnvCreate(
OCIEnv **envhpp, //OCI环境句柄指针
ub4 mode, //初始化模式:OCI_DEFAULT/OCI_THREADED 等
CONST dvoid *ctxp,
CONST dvoid *(*malicfp)(dvoid *ctxp,size_t size),
CONST dvoid *(ralocfp)(dvoid *ctxp,dvoid *memptr,size_t newsize),
CONST void *(*mfreefp)(dvoid *ctxp,dvoid *memptr),
Size_t xstramemsz,
Dvoid **usrmempp
)
eg :
swResult = OCIEnvCreate(&envhpp, OCI_DEFAULT, NULL, NULL, NULL, NULL, 0, NULL);
if(swResult != OCI_S
UCCESS && swResult != OCI_SUCCESS_WITH_INFO)
return FALSE;
sword OCIInitialize (
ub4 mode,
CONST dvoid *ctxp,
CONST dvoid *(*malocfp) (/* dvoid *ctxp, size_t size _*/),
CONST dvoid *(*ralocfp) (/*_ dvoid *ctxp, dvoid *memptr, size_t newsize _*/),
上一页 下一页