sql选择进入
我在 test.sql 文件中有以下代码。当 test_summary 表中有记录时,一切正常。但是当表中没有记录时,它就会失败。我希望它在没有记录时继续打印 dbms_output 消息并进行处理。我怎样才能做到这一点?
declare
total_var number(20,2) := 0.0;
nl_var number(20,2) := 0.0;
begin
select col1,col2
into total_var,nl_var
from testsch.test_summary;
dbms_output.put_LINE('');
dbms_output.put_LINE('testing1' || total_var);
dbms_output.put_LINE('testing2' || nl_var);
end;
I have the below code in test.sql file. When there is a record in test_summary table everything works fine. But when there is no record inside the table it fails. I want it to continue to print the dbms_output message and process when there is no record. How can I do that?
declare
total_var number(20,2) := 0.0;
nl_var number(20,2) := 0.0;
begin
select col1,col2
into total_var,nl_var
from testsch.test_summary;
dbms_output.put_LINE('');
dbms_output.put_LINE('testing1' || total_var);
dbms_output.put_LINE('testing2' || nl_var);
end;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我将添加一个简单的 NO_DATA_FOUND 异常处理程序。
I'd add a simple NO_DATA_FOUND exception handler.
除了加里完全有效的答案之外,您还可以通过使用显式游标来完全避免错误:
In addition to Gary's perfectly valid answer, you can also avoid the error altogether by using an explicit cursor:
我更喜欢有例外的变体(参见@Gary的答案),但还有另一种常见的变体,它会出现问题:
您可以使用 min() - 没关系。
如果没有找到数据,则变量中有空值
I prefer variant with exception (see answer from @Gary), but there are another common variant, wich dials with problem:
Your can use min() - don't matter.
If no data found you got null values in variables
可以一口气完成这一切。我认为避免未找到的行和太多的行。
Could do it all in one go. Avoid the not found and too many rows I believe.