Возвращается ли cfstoredproc.statusCode?

Когда ReturnCode=true, он должен заполнить cfstoredproc.statusCode кодом состояния, возвращаемым хранимой процедурой.

Но я могу видеть только кеширование и выполнение времени.

1 ответ

Вот пример, который я протестировал и работает. Возможно, проблема связана с тем, как записана хранимая процедура, или с драйвером JDBC, который вы используете для соединения с базой данных.

Другой вариант, который у вас есть, это не использовать тег для вызова хранимой процедуры. Вы также можете вызывать хранимые процедуры, используя тег cfquery. Это часто дает более предсказуемые результаты.

Вот код для процедуры тестирования:

CREATE PROCEDURE dbo.PTest
@Somename nvarchar(50) = NULL,  -- NULL default value
@SomeResponse nvarchar(50) = NULL OUTPUT
AS
IF @Somename IS NULL
BEGIN
RETURN(1)
END
ELSE
SET @SomeResponse = 'Hello World:' + @Somename;
BEGIN
RETURN(2)
END

Затем на стороне Coldfusion с помощью тега cfstoredproc:

<cfstoredproc datasource="yourdatasource" procedure="dbo.PTest" returncode="yes">
<cfprocparam type="in" variable="Somename" cfsqltype="cf_sql_varchar" value="John Smith">
<cfprocparam type="out" variable="SomeResponse" cfsqltype="cf_sql_varchar">
</cfstoredproc>

<cfoutput>
#SomeResponse#
<cfdump var="#cfstoredproc#">
</cfoutput>

Используя cfquery это будет выглядеть так:

<cfquery name="qFoo" datasource="yourdatasource">
SET NOCOUNT ON
DECLARE @SomeResponse varchar(50), @return_code int;

EXECUTE @return_code = dbo.PTest 'John Smith', @SomeResponse = @SomeResponse OUTPUT

SET NOCOUNT OFF

SELECT  @return_code as returnCode,
@SomeResponse as someResponse
</cfquery>

<cfoutput>
#qFoo.returnCode# | #qFoo.someResponse#
<cfdump var="#qFoo#">
</cfoutput>
Другие вопросы по тегам