- 论坛徽章:
- 5
|
调用存储过程的函数如下:
saveMeterFactory_p(char *meterFactoryCode,char* meterFactoryName)
{
char sql[100];
SQLCHAR szOutput[64];
SQLINTEGER cb1=SQL_NTS, cb2=SQL_NTS, cb3=SQL_NTS, cb4=SQL_NTS;
SQLINTEGER iReturnVal=0;
memset(szOutput,0,64);
memset(sql,0,100);
sprintf(sql,"{?=call MeterFactorySave_p(?,?,?)}");
SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv); //分配环境句柄
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0); //设置驱动程序属性(版本等)
SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc); //分配连接句柄
retcode = SQLDriverConnect(hdbc,NULL,ConnStr,SQL_NTS,ConnStrOut, sizeof(ConnStrOut),&ConnStrOutLen,SQL_DRIVER_NOPROMPT);
//函数SQLDriveConnect用一个连接字符串建立至数据源的连接。
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); //初始化语句句柄
retcode = SQLBindParameter(hstmt, 1, SQL_PARAM_OUTPUT, SQL_C_LONG,SQL_INTEGER, 0, 0, &iReturnVal, 0, &cb1);
retcode = SQLBindParameter(hstmt, 2, SQL_PARAM_OUTPUT, SQL_C_CHAR,SQL_VARCHAR, 64, 0, szOutput, 64, &cb2);
retcode = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR,SQL_VARCHAR, 4, 0, meterFactoryCode, 3, &cb3);
retcode = SQLBindParameter(hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR,SQL_VARCHAR, 32, 0, meterFactoryName, 32, &cb4);
retcode = SQLExecDirect (hstmt,(SQLCHAR *)sql, SQL_NTS);
MessageBox(NULL,szOutput,MessBoxCap,MB_ICONWARNING);
} |
|