Sql 从cfstoredproc访问RAISEERROR消息
我有一个SQL存储过程,在某些情况下,如果失败,它将返回-1的结果,但也会通过RAISERROR命令返回一条消息,例如:Sql 从cfstoredproc访问RAISEERROR消息,sql,stored-procedures,coldfusion,raiserror,cfstoredproc,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
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键。是否有任何方法可以访问已返回的错误消息。e、 g.向用户显示
<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>
谢谢
汤姆
p、 我会用“cfstoredproc”标记,但我无法创建新标记。您是否尝试过cfproclesult?说: 将查询对象与 由存储的 程序
不确定您使用什么数据库,但对于Oracle,我只是使用ColdFusion异常来冒泡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>
Hi,我用cfproclesult尝试了原始响应中的查询。当转储这个变量时,我得到一个变量未定义的错误。从读取文档看,这似乎是用于返回查询,而我的存储过程返回-1和错误消息。请参阅,您必须进行选择以填充此变量,例如“选择‘这是错误文本’作为错误”。我不是SQL server专家,但我认为可以处理过程中的错误,并使用SELECT返回结果。当我尝试在我的代码周围包装一个cftry/cfcatch块时,这没有什么区别-没有抛出coldfusion错误,所以我想没有什么可以捕获的。我确认使用SQL Server 2005和Adobe CF 8确实在cfcatch中收到引发的错误。详细信息:[Macromedia][SQLServer JDBC Driver][SQLServer]出现错误0occurred@Loftx-看起来很奇怪,但在“自定义调试输出”下的“调试输出设置”中有一个关于在调试中显示异常信息的设置。我在关闭健壮调试的服务器中使用该技术,但可能需要检查该字段。在你的盒子上吗?严重性为11的错误很重要;ColdFusion似乎忽略了10及以下的任何内容,但11将导致异常。