我有一个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”标记但我无法创建新标签。
答案 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关联 存储的结果集返回 过程