datagrip调试oracle提示



这里有使用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;

最新更新