当我在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:数值或值错误:字符转换错误
有人有什么解决办法吗?
发布于 2021-06-22 12:00:27
启用DBMS_OUTPUT按钮放置在“服务”窗口的右侧工具栏上

发布于 2021-06-20 09:42:40
我不使用DataGrip。
看来您应该启用 dbms_output。多么?尝试使用Ctrl + F8,或者按适当的按钮(工具提示写着“启用SYS.DBMS_OUTPUT")。
在你问题的第二部分,文档说
一般来说,只有问号?在SQL语句中被视为参数,这意味着您可能需要这样做:
v1 emp.empno%type := ?;因为,您发布的代码在例如或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'和?
https://stackoverflow.com/questions/68054057
复制相似问题