begin execute immediate 'update emp1 set empno = ename||empno,ename = substr(empno, length(ename) + 1 )'; execute immediate 'update emp1 set empno = substr(empno,1,length(empno)-length(ename))'; end; 报错第一个execute语句无效数字
时间: 2024-02-01 11:04:30 浏览: 67
oracle动态sql之EXECUTE IMMEDIATE.docx
这个错误可能是由于在执行第一个 `EXECUTE IMMEDIATE` 语句时,`empno` 的值不是一个数字类型,而是字符串类型,导致无法进行操作。建议检查一下 `empno` 的数据类型是否正确,如果是字符串类型,则需要在操作之前将其转换为数字类型。
同时,建议在执行 `EXECUTE IMMEDIATE` 语句前,先使用 `DBMS_OUTPUT.PUT_LINE` 函数输出一下 `update` 语句的内容,以便检查语句是否正确。例如:
```
begin
DBMS_OUTPUT.PUT_LINE('update emp1 set empno = ename||empno,ename = substr(empno, length(ename) + 1 )');
execute immediate 'update emp1 set empno = ename||empno,ename = substr(empno, length(ename) + 1 )';
DBMS_OUTPUT.PUT_LINE('update emp1 set empno = substr(empno,1,length(empno)-length(ename))');
execute immediate 'update emp1 set empno = substr(empno,1,length(empno)-length(ename))';
end;
```
这样可以方便地定位错误所在。
阅读全文