plsql 在 datagrip ide 中使用

Posted

技术标签:

【中文标题】plsql 在 datagrip ide 中使用【英文标题】:plsql using in 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:数字或值错误:字符到数字的转换错误

有人有解决办法吗?

【问题讨论】:

【参考方案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. ?

【讨论】:

以上是关于plsql 在 datagrip ide 中使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 datagrip IDE 中集成 oracle DBMS

如何在 DATAGRIP IDE 中添加用于生成 excel 文件的 SQL 查询?

如何通过 DataGrip IDE 在单个文件中导出和导入 MySQL 模式

datagrips 存储过程DBMS_OUTPUT.PUT_LINE输出问题

使用 DataGrip 创建模式如何备份和迁移

DataGrip入门使用教程