我创建了这个SQL代码,因为我需要对ISIN的特定列表进行排名。因此,我一直在使用以下代码来获得结果:
<div class="container">
<div class="row">
<div class="col-md-12 mt-5">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ipse Epicurus fortasse redderet, ut Sextus Peducaeus, Sex. Si quae forte-possumus. Iam id ipsum absurdum, maximum malum neglegi. Traditur, inquit, ab Epicuro ratio neglegendi doloris. Deinde dolorem quem maximum?">
Tooltip
</button>
</div>
</div>
</div>
我发现'没有记录'..这显然是错误的并且表明查询有问题....任何建议?
var r refcursor;
begin
msa.exl_stifel_ms ('01/01/2017',
'21/01/2018',
'GBP',
'CB',
'JE00BYR8GK67',
'UBS',
:r);
end;
答案 0 :(得分:1)
除非我错了:
select brokerid
into inbrokerid
from msa.client
where clientname = inbroker
是唯一可以返回NO-DATA-FOUND的SELECT(如果这就是你所说的“没有找到记录”)。其他SELECT是INSERT或UPDATE语句的一部分,因此它们不会做任何事情,但也不会引发错误。
你也打电话给rp_calctrnbicdetailtotals
- 我不知道它做了什么,但是 - 它也可能是错误的候选人。
尝试在SQL * Plus中运行该代码,它会告诉您错误的确切位置(PL / SQL对象名称,行号),以便您可以修复它。确保删除所有WHEN OTHERS异常处理程序(如果有的话)。
[编辑,看到@ kfinity的评论后]
正如我所说,我认为不是。这是一个例子;第一个SELECT返回 nothing ,没有员工EMPNO = -1(所以,正如你所说,它将返回no-data-found):
SQL> var pe refcursor
SQL> create or replace procedure p_test (test out sys_refcursor) is
2 begin
3 open test for
4 select ename
5 from emp
6 where empno = -1;
7 end;
8 /
Procedure created.
SQL> exec p_test (:pe)
PL/SQL procedure successfully completed.
SQL> print pe
no rows selected
请参阅?没错。
但是,如果它是普通的 SELECT ... INTO,那么是 - 它会提高它:
SQL> create or replace procedure p_test as
2 l_ename varchar2(20);
3 begin
4 select ename into l_ename
5 from emp
6 where empno = -1;
7 end;
8 /
Procedure created.
SQL> exec p_test
BEGIN p_test; END;
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "HR.P_TEST", line 4
ORA-06512: at line 1
SQL>
[编辑#2]
是的,正如Alessandro所说,它应该由EXCEPTION部分处理。