17,082
社区成员
发帖
与我相关
我的任务
分享
nRc = OCIEnvCreate((OCIEnv **) &p_env,OCI_DEFAULT,(dvoid *)0,
(dvoid * (*)(dvoid *, size_t)) 0,
(dvoid * (*)(dvoid *, dvoid *, size_t))0,
(void (*)(dvoid *, dvoid *)) 0,
(size_t) 0, (dvoid **) 0);
nRc = OCIHandleAlloc( (dvoid *)p_env,(dvoid**)&p_err,OCI_HTYPE_ERROR,
(size_t)0,(dvoid**)0);
nRc = OCIHandleAlloc( (dvoid *)p_env,(dvoid **)&p_svc,OCI_HTYPE_SVCCTX,(size_t)0,
(dvoid **) 0);
nRc = OCIHandleAlloc( (dvoid*)p_env, (dvoid**)&p_svr, OCI_HTYPE_SERVER,(size_t)0,
(dvoid **) 0);
nRc = OCIHandleAlloc( p_env,(void**)&p_session, OCI_HTYPE_SESSION, 0, NULL);
nRc = OCIHandleAlloc((dvoid *) p_env,(dvoid **) &p_sql,OCI_HTYPE_STMT,(size_t)0,
(dvoid **) 0);
nRc = OCIServerAttach(p_svr,p_err,"TestOCI",strlen("TestOCI"),0);
// Specify server handle to service context
OCIAttrSet(p_svc,OCI_HTYPE_SVCCTX,p_svr,0,OCI_ATTR_SERVER,p_err);
// Associate username with session handle
OCIAttrSet(p_session,OCI_HTYPE_SESSION,"sz12366",strlen("sz12366"),OCI_ATTR_USERNAME,p_err);
// Associate password with session handle
OCIAttrSet(p_session,OCI_HTYPE_SESSION,"sz12366",strlen("sz12366"),OCI_ATTR_PASSWORD,p_err);
// Open session using service context and session handle
nRc = OCISessionBegin(p_svc,p_err,p_session,OCI_CRED_RDBMS,OCI_DEFAULT);
// Specify session handle to service context
OCIAttrSet(p_svc,OCI_HTYPE_SVCCTX,p_session,0,OCI_ATTR_SESSION,p_err);
if( nRc == OCI_ERROR)
{
OCIErrorGet((dvoid *)p_err,(ub4)1,(text*)NULL,&errcode,
(text*)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR);
printf("Error - %.*s\n", 512, errbuf);
}
else
{
printf("Connect to orcl successful! 宸茶繛鎺ワ紒\n");
}
sprintf(szSqlStr,"%s","begin zsk_get_zlcode(:as_area_no,:as_typecode,:as_ctrl_id,:as_codename); end;");
nRc = OCIStmtPrepare(p_sql,p_err, (text*)szSqlStr, (ub4)strlen(szSqlStr),(ub4) OCI_NTV_SYNTAX,(ub4)OCI_DEFAULT);
//灏嗗崰浣嶇鍜屽彉閲弍honename缁戝畾
nRc = OCIBindByPos(p_sql,&p_bnd[0],p_err,1,(dvoid *)chAreaNo,(sb4)(strlen(chAreaNo)+1),
SQLT_STR, NULL, NULL, NULL, 0, NULL, (ub4)OCI_DEFAULT);
nRc = OCIBindByPos(p_sql,&p_bnd[1],p_err,2,(dvoid *)chTypecode,(sb4)(strlen(chTypecode)+1),
SQLT_STR, NULL, NULL, NULL, 0, NULL, (ub4)OCI_DEFAULT);
nRc = OCIDefineByPos(p_sql,&p_dfn[0],p_err,3,(dvoid*)chCtrlid,(sb4)sizeof(chCtrlid),
SQLT_STR, NULL, NULL, NULL,(ub4)OCI_DEFAULT);
nRc = OCIDefineByPos(p_sql,&p_dfn[1],p_err,4,(dvoid*)chCodeName,(sb4)sizeof(chCodeName),
SQLT_STR, NULL, NULL, NULL,(ub4)OCI_DEFAULT);
//
nRc = OCIStmtExecute(p_svc,p_sql,p_err,(ub4)1,(ub4)0,(OCISnapshot *)NULL,
(OCISnapshot *)NULL,(ub4)OCI_DEFAULT);
if( nRc == OCI_ERROR)
{
OCIErrorGet((dvoid *)p_err, (ub4) 1, (text *) NULL, &errcode, (text*)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR);
printf("Error - %.*s\n", 512, errbuf);
}
OCITransCommit( p_svc, p_err, 0); //鐗瑰埆閲嶈锛岄渶瑕佺珛鍗虫彁浜わ紝鍚﹀垯鐪嬩笉鍒版墽琛屽瓨鍌ㄨ繃绋嬬殑鏁堟灉銆?
// Free select statement handle/* Disconnect */
nRc = OCIHandleFree((dvoid *) p_sql, OCI_HTYPE_STMT); /* Free handles */
nRc = OCIHandleFree((dvoid *) p_svr, OCI_HTYPE_SVCCTX);
nRc = OCIHandleFree((dvoid *) p_svc, OCI_HTYPE_SVCCTX);
nRc = OCIHandleFree((dvoid *) p_err, OCI_HTYPE_ERROR);
ORA-01009 missing mandatory parameter
Cause: A host language program call did not pass all required parameters.
Action: Check the syntax for the call and enter all required parameters.