sql_str = "begin EXCHANGE_Insert(:szphoneNo,:agentNo,:fMoney,:errInsert);end;" ;
rc = OCIStmtPrepare(pStmt,pErr,(text*)sql_str,(ub4)strlen(sql_str),(ub4)OCI_NTV_SYNTAX,(ub4)OCI_DEFAULT);
rc = OCIBindByPos(pStmt,&bidhp[0],pErr,1,(dvoid*)szPhoneNo,(sb4)(strlen(szPhoneNo)+1),SQLT_STR,NULL,NULL,NULL,0,NULL,(ub4)OCI_DEFAULT);
rc = OCIBindByPos(pStmt,&bidhp[1],pErr,2,(dvoid*)szAgentNo,(sb4)(strlen(szAgentNo)+1),SQLT_STR,NULL,NULL,NULL,0,NULL,(ub4)OCI_DEFAULT);
rc = OCIBindByPos(pStmt,&bidhp[2],pErr,3,(dvoid *)&ociNum,(sb4)(sizeof(OCINumber)),SQLT_VNU,NULL,NULL,NULL,0,NULL,(ub4)OCI_DEFAULT);
rc = OCIDefineByPos(pStmt,&bidhp[3],pErr,4,(dvoid *)&res,(sb4)(sizeof(int)),SQLT_INT,NULL,NULL,NULL,(ub4)OCI_DEFAULT);
rc = OCIStmtExecute(pSvc,pStmt,pErr,(ub4)1,(ub4)0,(OCISnapshot*)NULL,(OCISnapshot*)NULL,(ub4)OCI_DEFAULT|OCI_COMMIT_ON_SUCCESS);
OCIErrorGet((dvoid*)pErr,(ub4)1,NULL,&errcode,errbuf,(ub4)sizeof(errbuf),OCI_HTYPE_ERROR); printf("%d",res);
...........................................................................................................
存储过程
create or replace procedure EXCHANGE_Insert(szphoneNo in  VARCHAR2, agentNo in VARCHAR2, fMoney in number,errInsert out integer) is...
为什么执行到OCIStmtExecute后返回-1 错误类型是
"ORA-01008: 并非所有变量都已绑定我想 在存储过程中 设置errInsert的值 然后在程序中 接受使用
请高手指点一下 
谢谢啦

解决方案 »

  1.   

    出现“ORA-01008: 并非所有变量都已绑定”的问题一般情况为:
    1.值为NULL。
    2.参数不全。
    再仔细检查下吧。
      

  2.   

    额 我刚学习这个...OCIBindByPos和OCIDefineByPos这两个函数 很纠结啊
     (:szphoneNo,:agentNo,:fMoney,:errInsert) 我定义了4个参数 用BING绑定3个 用DEFINE绑定1个
    一直返回"ORA-01008: 并非所有变量都已绑定难道用这个OCIDefineByPos函数不能绑定么?
      

  3.   

    跪求各位大神帮助,[email protected] 小子跪求了