【问题标题】:plsql using in datagrip ideplsql 在 datagrip ide 中使用
【发布时间】:2021-06-20 08:32:32
【问题描述】:

当我在 Datagrip 中运行 PL/SQL 脚本时,我正在编译任务,但我看不到输出如何在 datagrip 中获得输出, 当我运行动态块时,它不会在 datagrip 中获取输入值。

declare
    v1 emp.empno%type := '&empno';
    v2 emp.ename%type;
begin
    select empno,ename into v1,v2 from emp where empno = v1;
    DBMS_OUTPUT.PUT_LINE(v1 || ' ' || v2);
end;

显示这个错误

ORA-06502:PL/SQL:数字或值错误:字符到数字的转换错误

有人有解决办法吗?

【问题讨论】:

    标签: oracle plsql datagrip


    【解决方案1】:

    启用 DBMS_OUTPUT 按钮放置在 Services 窗口的右侧工具栏上

    【讨论】:

      【解决方案2】:

      我不使用 DataGrip。


      看来您应该启用 dbms_output。如何?尝试使用 [Ctrl + F8](作为键盘快捷键),或按下相应的按钮(工具提示显示“启用 SYS.DBMS_OUTPUT”)。


      在你问题的第二部分,documentation

      一般只有问号 ?在 SQL 语句中被视为参数,这意味着您可能需要这样做:

      v1 emp.empno%type := ?;
      

      因为,您发布的代码在例如SQL Developer 或 SQL*Plus:

      启用 DBMS_OUTPUT:

      SQL> set serveroutput on
      

      代码执行:

      SQL> declare
        2      v1 emp.empno%type := '&empno';
        3      v2 emp.ename%type;
        4  begin
        5      select empno,ename into v1,v2 from emp where empno = v1;
        6      DBMS_OUTPUT.PUT_LINE(v1 || ' ' || v2);
        7  end;
        8  /
      Enter value for empno: 7369
      7369 SMITH                                 --> this is the result
      
      PL/SQL procedure successfully completed.
      
      SQL>
      

      最后,ORA-06502:当您传递不是数字的东西时会发生这种情况(而数字是预期的);比如我传ABC:

      SQL> /
      Enter value for empno: ABC
      declare
      *
      ERROR at line 1:
      ORA-06502: PL/SQL: numeric or value error: character to number conversion error
      ORA-06512: at line 2
      
      
      SQL>
      

      看到了吗?你得到同样的错误。 也许这一切都与替换变量的不当使用有关,即'&empno' vs. ?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-18
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 2019-08-25
        • 2021-08-23
        相关资源
        最近更新 更多