我在Asp .Net和C#做一个项目。我也在使用ODP .NET连接到我的Oracle DB。
我正在使用存储过程将值插入数据库。一切都很好,它也提出了我所有的例外。
我有3个例外:
当引发前两个异常时,我将错误插入表错误中,一切顺利。
我真正想知道的是,如何在发生异常时向用户显示消息?
像dbms_output.put_line("Error");
之类的东西......但我想让它显示在我的网页上。这可能吗?
欢迎任何提示,提前谢谢。
答案 0 :(得分:4)
由于您的.NET程序是您的客户端,您应该让任何未处理的异常从PL / SQL程序传播回客户端,在那里您可以像处理任何其他异常一样处理它。
换句话说,您应该从PL / SQL代码中删除“when others”异常,而是将数据库调用(使用ODP.NET)与C#异常块包装起来。在那里,您可以捕获异常并获取Oracle错误号和文本,并在需要时将其显示给用户。
(使用此方法,您还可以在PL / SQL代码中使用RAISE_APPLICATION_ERROR将错误信号发送回C#客户端。)
答案 1 :(得分:1)
您可以修复存储过程以返回整数,0表示正常,1表示类型1的异常,类型2的2例外等等...这样UI可以通知用户保存方法没有顺利进行。
通常我不会在存储过程中处理异常,但我知道你想从SQL中记录错误,所以上面的方法可以让你做你想做的事。
答案 2 :(得分:0)
在我们的sql server存储过程中,我们有类似的东西:
IF @@ ERROR<> 0
return (1)
ELSE
return (0)
但它取决于存储的内容以及它返回的内容,如果存储返回一个表,则可以使用output参数发回上面讨论的整数。