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;报错无效数字
时间: 2024-02-01 13:04:30 浏览: 20
您的 SQL 语句中第一个 `execute immediate` 语句的 `substr` 函数存在语法错误,导致 SQL 语句无法正确执行。建议您修改如下:
```
begin
execute immediate 'update emp1 set empno = ename||empno,ename = substr(empno,1,length(empno)-length(ename))';
end;
```
这里我把两个 `execute immediate` 语句合并为一个,并且将第一个 `substr` 函数修改为正确的形式。
相关问题
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语句无效数字
这个错误可能是由于在执行第一个 `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;
```
这样可以方便地定位错误所在。
begin execute immediate 'update emp1 set empno = ename||empno,ename = substr(empno,length(ename)+1)'; end;报错无效数字
您的 SQL 语句中第一个 `execute immediate` 语句的 `substr` 函数存在语法错误,导致 SQL 语句无法正确执行。建议您修改如下:
```
begin
execute immediate 'update emp1 set empno = ename||empno,ename = substr(empno, length(ename)+1)';
end;
```
这里我将 `substr` 函数的语法修改为正确的形式。