cancel
Showing results for 
Search instead for 
Did you mean: 

RPCFUNC With varchar Output... Issues

Former Member
0 Kudos

Alright, expert...  I'm stuck.

I have a stored procedure on MS-SQL Server, which from the management console returns everything correctly.  The basic definition in SQL is:

xsp_ENTITY__GET @ai_ENTITY int, @ai_TYPE int OUTPUT, @as_NAME varchar(64) OUTPUT, @as_CODE varchar(16) OUTPUT RETURNS int

It is declared in PB (12.5) as:

PUBLIC FUNCTION Long sp_ENTITY__GET ( Long ai_ENTITY, REF Long ai_TYPE, REF String as_NAME, REF String as_CODE ) RPCFUN ALIAS FOR "dbo.xsp_ENTITY__GET"

I call it from a SQL query, as follows:

DECLARE @li_ENTITY int, @li_TYPE int, @ls_NAME varchar(64), @ls_CODE varchar(16)

SET @li_ENTITY = 22

EXEC xsp_ENTITY__GET @li_ENTITY, @li_TYPE OUTPUT, @ls_NAME OUTPUT, @ls_CODE OUTPUT

SELECT @li_ENTITY, @li_TYPE, @ls_NAME, @ls_CODE

This returns everything perfectly.  However, when called from PB, only the integer/long values are returned.  The name/code (strings) are simply blank.

Any thoughts?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

And naturally, 30 seconds after I type this up, I altered my Google search and got the answer I needed.

Looks like the string/varchar arguments need to be "primed" before calling them.  See below.

ls_NAME = Fill( ' ', 64 )

ls_CODE = Fill( ' ', 16 )

TransObject.sp_ENTITY__GET( ll_ENTITY, ll_TYPE, ls_NAME, ls_CODE )

This allowed me to return the name/code perfectly!

Answers (0)