【问题标题】: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. ?