这里有使用DataGrip调试oracle例程和/或包的一般提示的人吗?
我遇到的问题是:
1我不理解代码的最后一部分dataGrip生成
declare
result NUMBER;
someVar := 300198032;
begin
result := FN_GET_CLIENT_ORG_SEQ(V_someVar => someVar );
open ? for select result as result from dual;
end;
最后有这样的">打开用于从对偶中选择结果&";,到底是怎么开的
当点击按钮进行调试时,它会显示出这个对话框,尝试了不同的组合(数字、字符串等(,但oracle抱怨并没有运行,我最终评论了那一行以便进行调试。
对话图像
2在执行步进操作时,我注意到在输入一些语句后,调试按钮会被禁用(step-over、step-int等(。基本上DataGrip只是一直在思考/挂起,我无法继续调试。
示例,在这种情况下,我必须介入以使调试继续工作,如果我介入,它将挂起
SELECT something, something
INTO somethingInto
FROM some table
另一个例子是,如果DataGrip没有挂起或进入不稳定状态,则任何结束状态(定义例程的结束(都需要被跳过。
3似乎很难在包中包含DataGrip调试例程,要么调试过程开始时出现问题,要么跨步骤可能是最安全的方法。
任何专业提示都将不胜感激
我不了解Datagrip,所以我帮不上忙。
但是,看看这是否有助于
打开的到底是什么?
看起来像是refcursor业务。以下代码使用的open
与您在代码中看到的相同。它获取在deptno
等于result
局部变量值的部门中工作的员工。
SQL> set serveroutput on
SQL> declare
2 result number := 10;
3 rc sys_refcursor; --> this is your "?" - a refcursor
4 l_name emp.ename%type;
5 begin
6 open rc for select ename from emp --> this is your "open"
7 where deptno = result;
8
9 -- the following code just displays what's being fetched
10 loop
11 fetch rc into l_name;
12 exit when rc%notfound;
13 dbms_output.put_line(l_name);
14 end loop;
15 close rc;
16 end;
17 /
CLARK
KING
MILLER
PL/SQL procedure successfully completed.
SQL>
Aight,由于">跨过大部分";选择";或";结束";线(避免数据抓取挂起/进入不稳定状态(
还替换通过声明sys_refcursor,在调试时捕获/显示结果
declare
result NUMBER;
someVar := 300198032;
rc sys_refcursor; -- < -- HERE
begin
result := FN_GET_CLIENT_ORG_SEQ(CLIENT_ID => someVar );
-- HERE (below)
open rc for select result as result from dual;
end;