从cfstoredproc访问RAISEERROR消息

时间:2009-12-10 09:21:54

标签: sql stored-procedures coldfusion raiserror cfstoredproc

我有一个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键。有没有办法可以访问已返回的错误消息。例如要显示给用户。

谢谢,

汤姆

P.S。我会用“cfstoredproc”标记但我无法创建新标签。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

您是否尝试过 cfprocresult Manual page说:

  

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