datagrip 调试 oracle 提示请

datagrip debug oracle tips please

这里有人有 调试 oracle 例程的一般技巧 and/or 包 DataGrip(甚至让他们达到 start/work/debug)?

我遇到的问题是:

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;

最后有这个“open ? for select result as result from dual;”,open 到底是什么?

单击按钮进行调试时会出现此对话框,尝试了不同的组合(数字、字符串等)但 oracle 投诉并没有 运行,我最终对该行进行了注释以便进行调试.

image of the dialogue

2 在执行单步执行时,我注意到在输入一些语句后,调试按钮被禁用(单步执行、单步执行等)。基本上DataGrip只是保持thinking/hangs,我无法继续调试。

示例,在这种情况下,为了调试继续工作,我必须跳过,如果我进入,它会挂起[=13​​=]

SELECT something, something
    INTO somethingInto
    FROM some table

再举个例子, 如果 DataGrip 没有挂起或进入边缘状态,则需要跨过任何 End statmens(定义例程的结束)。

3 似乎更难将 DataGrip 调试例程包含在程序包中,调试过程启动时出现问题,或者跳过可能是使其工作的最安全方法.

任何专业提示将不胜感激

我不懂Datagrip所以帮不上忙

但是,看看这是否有助于

what the heck is the open ?

看起来像一个 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>

好吧,由于“跳过了大部分“选择”或“结束”行,现在似乎事情变得更顺利了。(避免数据夹到 hang/enter 边缘)

还通过声明 sys_refcursor、captures/shows 结果替换 ?,同时调试

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;