hDefine = NULL;
OCIDefineByPos(stmtp,
&hDefine,
errhp,
1,
&myt.no,
sizeof(myt.no),
SQLT_INT,
NULL,
NULL,
NULL,
OCI_DEFAULT);
OCIDefineByPos(stmtp,
&hDefine,
errhp,
2,
myt.name,
sizeof(myt.name),
SQLT_STR,
NULL,
NULL,
NULL,
OCI_DEFAULT);OCIDefineArrayOfStruct(hDefine,
                      errhp,
                      sizeof(myt),
                      0,0,0);
OCIStmtExecute(svchp,stmtp,errhp,1,0,NULL,NULL,OCI_DEFAULT); 
在实行SQL语句的时候会出错,我想知道OCI输出多个变量是否是想我这样必须用结构体,这几个函数具体怎么用,昨天开始
学的OCI学的脑袋疼,单位也没人用这个,请大家帮帮忙 

解决方案 »

  1.   

    OCIStmtExecute(svchp,stmtp,errhp,0,0,NULL,NULL,OCI_DEFAULT); 
    我改成这样后就可以正常查出我需要的数据了   
    我在这个之前查过select empno from emp;时好用
    只需:hDefine = NULL;
    OCIDefineByPos(stmtp,
    &hDefine,
    errhp,
    1,
    &myt.no,
    sizeof(myt.no),
    SQLT_INT,
    NULL,
    NULL,
    NULL,
    OCI_DEFAULT); 
    OCIStmtExecute(svchp,stmtp,errhp,1,0,NULL,NULL,OCI_DEFAULT); 但是当我的查询为  select empno,ename from emp后
    hDefine = NULL;
    OCIDefineByPos(stmtp,
    &hDefine,
    errhp,
    1,
    &myt.no,
    sizeof(myt.no),
    SQLT_INT,
    NULL,
    NULL,
    NULL,
    OCI_DEFAULT);
    OCIDefineByPos(stmtp,
    &hDefine,
    errhp,
    2,
    myt.name,
    sizeof(myt.name),
    SQLT_STR,
    NULL,
    NULL,
    NULL,
    OCI_DEFAULT); 
    OCIStmtExecute(svchp,stmtp,errhp,1,0,NULL,NULL,OCI_DEFAULT); 
    执行有错
    我就改为了一楼的版本,一样结果有错,但将OCIStmtExecute(svchp,stmtp,errhp,1,0,NULL,NULL,OCI_DEFAULT); 
    第四个参数改为0 就没有错误了  请大哥们讲讲