Hi Mark,
For your test1 you try to do the SQLExecute twice,
the first time without having bound the second parm !
I think this will barf.
regards
Wolf
Mark Wong <[EMAIL PROTECTED]> schrieb am 27.02.02:
> I'm having some varying problems with the parameter declarations with
> stored procedure. I'll start off with the simpliest case and hope that
> it isn't something silly on my part.
>
> Here are the 2 stored procedues I'm comparing:
>
> CREATE DBPROC test1(IN num1 FIXED(1),
> IN num2 FIXED(2)) AS
> BEGIN
> select * from tpcw.item;
> END;
>
> CREATE DBPROC test2(IN num1 FIXED(1),
> OUT num2 FIXED(2)) AS
> BEGIN
> set num2 = 0;
> END;
>
>
> There is the (simplified) code I'm using to call each stored procedure:
>
> /* for test1 */
>
> SWORD num1 = 1;
> UDWORD num2 = 2;
> SQLAllocHandle(SQL_HANDLE_STMT, odbcc.hdbc, &odbcc.hstmt);
> SQLPrepare(odbcc.hstmt, "CALL test1(?,?)", SQL_NTS);
> SQLBindParameter(odbcc.hstmt,
> 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0,
> &num1, 0, NULL);
> rc = SQLExecute(odbcc.hstmt);
> if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO)
> {
> odbc_error(SQL_HANDLE_STMT, odbcc.hstmt);
> return W_ERROR;
> }
> SQLBindParameter(odbcc.hstmt,
> 2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0,
> &num2, 0, NULL);
> rc = SQLExecute(odbcc.hstmt);
> if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO)
> {
> odbc_error(SQL_HANDLE_STMT, odbcc.hstmt);
> return W_ERROR;
> }
>
>
> /* for test2 */
>
> SWORD num1 = 1;
> UDWORD num2;
> SQLAllocHandle(SQL_HANDLE_STMT, odbcc.hdbc, &odbcc.hstmt);
> SQLPrepare(odbcc.hstmt, "CALL test2(?,?)", SQL_NTS);
> SQLBindParameter(odbcc.hstmt,
> 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0,
> &num1, 0, NULL);
> rc = SQLExecute(odbcc.hstmt);
> if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO)
> {
> odbc_error(SQL_HANDLE_STMT, odbcc.hstmt);
> return W_ERROR;
> }
> SQLBindParameter(odbcc.hstmt,
> 2, SQL_PARAM_OUTPUT, SQL_C_LONG, SQL_INTEGER, 0, 0,
> &num2, 0, NULL);
> rc = SQLExecute(odbcc.hstmt);
> if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO)
> {
> odbc_error(SQL_HANDLE_STMT, odbcc.hstmt);
> return W_ERROR;
> }
>
>
> So test2 executes as expected, while test1 results in the following
> error:
>
> SQLSTATE 07001
> [SAP AG][LIBSQLOD SO]Wrong number of parameters.
>
> I'm a little baffled by this. If I'm doing what I think I'm doing, I
> just changed INPUT to OUTPUT for num2, and changed the stored procedure
> and bind calls accordingly.
>
> Thanks,
> Mark
>
> _______________________________________________
> sapdb.general mailing list
> [EMAIL PROTECTED]
> http://listserv.sap.com/mailman/listinfo/sapdb.general
______________________________________________________________________________
Darf es ein bisschen mehr sein? Mehr Speicher, mehr Mail, mehr Erlebnis,
mehr Leistung, mehr Pr�mie unter http://club.web.de/?mc=021102
_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general