ede*_*son 7 firebird firebird2.1 firebird2.5
我想在发生异常时从过程返回错误消息.在SQL Server中,您将选择Error_Number()和Error_Message().我将如何在FirebirdSql中执行此操作
SET TERM ^ ;
CREATE PROCEDURE sprocname
( id int )
RETURNS
( gcode int, errmsg varchar(250) )
AS
BEGIN
gcode = 0;
errmsg = '';
-- do procedure code here
WHEN ANY DO
BEGIN
gcode = gdscode; -- ??
errmsg = ??;
END
SUSPEND;
END^
SET TERM ; ^
Run Code Online (Sandbox Code Playgroud)
不幸的是,您将需要在客户端执行此操作,因为当前无法在PSQL中获得此功能。Firebird跟踪器中有一项功能请求,该请求已针对Firebird 4实施,预计将于2019年发布。
请参阅Firebird 4 Alpha 1发行说明的“ 系统功能RDB $ ERROR()”部分(警告:在下一个Alpha版本中,链接可能会中断):
该函数
RDB$ERROR()
将PSQL错误上下文作为输入,并返回活动异常的特定上下文。它的范围仅限于PSQL中异常处理块的上下文。在异常处理块之外,RDB$ERROR
始终包含NULL
。返回值的类型取决于上下文。
语法规则
Run Code Online (Sandbox Code Playgroud)RDB$ERROR ( context ) context ::= { GDSCODE | SQLCODE | SQLSTATE | EXCEPTION | MESSAGE }
[..]
例
Run Code Online (Sandbox Code Playgroud)BEGIN ... WHEN ANY DO EXECUTE PROCEDURE P_LOG_EXCEPTION(RDB$ERROR(MESSAGE)); END
归档时间: |
|
查看次数: |
4286 次 |
最近记录: |