[unixODBC-support] inputOutput parameter problem in calling stored Procedure

Nick Gorham nick at lurcher.org
Tue Feb 17 09:36:57 GMT 2009


Bartolomeo Nicolotti wrote:

>Hi,
>
>I've tried with a C program 
>http://www.nabble.com/file/p22053497/helloODBCPrepStoredP.c
>helloODBCPrepStoredP.c  that calls a stored procedure (better and RPG
>program on iseries) and I got:
>
>bart at LxPC37:~/download/software/mono/src/test$ ./helloODBCPrepStoredP Dunkel
>siapbn siapbn75
>Error code: -1
>Failure because: prepare:
>
>and from unixodbc log.
>
>[ODBC][11389][SQLPrepare.c][189]
>		Entry:            
>			Statement = 0x80690e0            
>			SQL = [CALL GIANLUCA.PROVACS(?)][length = 24 (SQL_NTS)]
>[ODBC][11389][SQLPrepare.c][364]
>		Exit:[SQL_ERROR]
>		DIAG [S0002] [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0204 - PROVACS
>in GIANLUCA di tipo *N non trovato.
>
>The message, is the same as with mono, and in the iseries slang means that
>it searches for a procedure with no parameters (*N), and it doesn't find it
>as the procedure PROVACS has been built for test purpose only, has 1
>parameter of type char and it's not overloaded.
>
>I think that the driver lacks the possibility of doing prepared statements
>that call stored procedures, or there's some other way of doing this.
>My pc is 32 bit, the iseries system uses ebcdic and the number of bits on
>iseries is not so easy to know, I think 48bits, yes the iseries is a strange
>world...
>  
>

Just for completnes, move the SQLBindParameter to before the SQLPrepare. 
But as we have said, its the driver that has the problem. I suspect 
binding first will fix the problem, or passing the variable in place. 
But neither help you with mono.

-- 
Nick


More information about the unixODBC-support mailing list