2

我有一个 SQL 存储过程,在某些情况下,如果失败,它会返回 -1 的结果,但也会通过 RAISERROR 命令返回一条消息,例如:

BEGIN

    RAISERROR ('Error %i has occurred', 11, 1, 0)
    RETURN -1

END

我正在使用 cfstoredproc 通过coldfusion 访问它,例如:

<cfstoredproc procedure="sp_return" datasource="myDatasource" returncode="yes">
<cfdump var="#cfstoredproc#">

但是返回的结构只包含一个 ExecutionTime 和 StatusCode 键。有什么方法可以访问已返回的错误消息。例如向用户显示。

谢谢,

汤姆

ps 我会用“cfstoredproc”标记,但我不能创建新标记。

4

2 回答 2

3

不确定您使用的是什么数据库,但对于 Oracle,我只是使用 ColdFusion Exceptions 来冒泡 Oracle 异常。- #cfcatch.message# 和 #cfcatch.detail# 是您想要回显给用户的内容。

<cftry>

<cfstoredproc  procedure = "my_Proc" dataSource = "#DB#" returnCode = "No">
   <cfprocparam type="in" cfsqltype="CF_SQL_VARCHAR" variable="myvar"   value="#someval#" null="No"> 
   <cfprocresult name="my_Response">
</cfstoredproc>

<cfcatch type="any">

   <cflog file="ProcError" text="Message = #cfcatch.message# Detail= #cfcatch.detail#">

</cfcatch>
</cftry>
于 2009-12-10T17:12:09.660 回答
1

你试过cfprocresult吗?手册页说:

将查询对象与存储过程返回的结果集相关联。

于 2009-12-10T10:28:09.460 回答