这里不允许使用oracle列

时间:2017-12-01 00:23:05

标签: oracle oracle11g

我收到了这个错误:

Error report -
ORA-00984: column not allowed here
ORA-06512: at line 14
00984. 00000 -  "column not allowed here"

这是代码。我复制并粘贴字段名称(全部为上限)。字段名称应该是正确的

set serveroutput on

DECLARE
  my_creation_dt date;
  mysql varchar2(6000) := '';
BEGIN
  select creation_dt into my_creation_dt from role_table where security_role = 'admin';

  mysql := 'insert into role_grant_table (PERSON_ID, CREATION_DT, SECURITY_ROLE, 
    SSS_CREATE_DT, UPDATE_WHO, UPDATE_ON) values (1234, SYSDATE, 
    "ADMIN", 
    :my_creation_dt, 
    "myname", 
    SYSDATE)'; -- line 14, column not allowed here

  execute immediate mysql using (my_creation_dt);

END;

1 个答案:

答案 0 :(得分:3)

双引号用于包含标识符(通常在它们具有混合大小写或标点符号时)。因此,Oracle将MassTransit.IConsumer"ADMIN"解释为标识符,在此上下文中,解析器将成为列名。该错误告诉您不允许在此处引用列。

据推测,您希望这些是要插入的字符串值。使用 用单引号括起字符串文字,即"myname"'ADMIN'