PL/SQL Concatenation



我有一个在条目中有两个参数的过程 CREATE_PARTITION( 年份来源在 VARCHAR2 , 年份目的地在 VARCHAR2 (

当我想插入与另一个字符串连接的年份时,表中没有插入任何内容

我声明变量 yearAA 它采用 yearSource,并将其与"AA"连接

起来yearAA varchar2(30( := yearSource||'AA';

要插入它,我使用:

立即执行 ' 插入到MOUADTEST2018值('||年AA||'(';

结果:未插入任何内容 它显示此消息ORA-00984:此处不允许列

你必须引用值。实际上,如果yearAA2018AA,您的代码将被解释为:

execute immediate 'INSERT INTO MOUADTEST2018 VALUES(2018AA)';

哪个尝试运行

INSERT INTO MOUADTEST2018 VALUES(2018AA)

这抛出了一个错误,因为2018AA不在引号中,所以 Oracle 认为它必须是一个标识符(如列名(。

您可以将代码更改为

execute immediate 'INSERT INTO MOUADTEST2018 VALUES('''||yearAA||''')';

但这不是最佳实践,因为它允许SQL注入。请改用绑定变量。

execute immediate 'INSERT INTO MOUADTEST2018 VALUES(:1)' using yearAA;

另外,我认为您不需要execute immediate,因此您可以执行以下操作:

insert into MOUADTEST2018 values(yearAA);

相关内容

  • 没有找到相关文章

最新更新