cfstoredproc.statusCode返回了吗?

时间:2015-08-04 02:01:56

标签: lucee

当ReturnCode = true时,它应该populate cfstoredproc.statusCode with the status code returned by the stored procedure.

但我只能看到缓存和执行时间。

1 个答案:

答案 0 :(得分:1)

这是我测试和工作的一个例子。也许问题在于编写存储过程的方式或者用于连接数据库的JDBC驱动程序。

您手边的另一个选择是不使用标记来调用storedprocedure。您还可以使用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>