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;
这里有人有 调试 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;