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 模式