Когда ReturnCode = true, он должен populate cfstoredproc.statusCode with the status code returned by the stored procedure.Возвращен ли cfstoredproc.statusCode?
Но я могу видеть только кеширование и исполнение.
Когда ReturnCode = true, он должен populate cfstoredproc.statusCode with the status code returned by the stored procedure.Возвращен ли cfstoredproc.statusCode?
Но я могу видеть только кеширование и исполнение.
Вот пример, который я тестировал и работает. Возможно, проблема связана с тем, как записывается хранимая процедура, или с помощью драйвера 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>
Имейте в виду, что хранимые процедуры могут возвращать несколько наборов результатов. CFQuery способен обрабатывать только один * набор результатов, поэтому он не является прямым эквивалентом. (Лично я предпочитаю cfstoredproc). Поскольку эта функция должна, вы можете захотеть опубликовать небольшой экземпляр для воспроизведения. Надеюсь, кто-то может протестировать его против трех двигателей Railo, Lucee и ACF и посмотреть, можем ли мы понять, почему он работает (ошибка, разница драйверов и т. Д.). – Leigh
Эта функция также зависит от сервера базы данных. с каким продуктом вы подключаетесь? –
Microsoft SQL Service 2012 –
Можете ли вы опубликовать вместе небольшой пример, демонстрирующий проблему? – Leigh