SQL错误:ORA-00984:此处不允许使用列

时间:2016-01-01 22:04:13

标签: sql oracle oracle11g

我尝试使用此SQL查询生成一些测试数据

    INSERT INTO EVENT (ID, SOURCE, TYPE, EVENT_DATE, DESCRIPTION) VALUES (DBMS_RANDOM.Value(5000, 90000), 101, 'WARNING', (SYSDATE - 1/10 + LOOP_COUNTER/1300), DBMS_RANDOM.STRING('X', 5))

CREATE TABLE EVENT(
  ID INTEGER NOT NULL,
  SOURCE VARCHAR2(50 ),
  TYPE VARCHAR2(50 ),
  EVENT_DATE DATE,
  DESCRIPTION VARCHAR2(100 )
)

我收到错误错误报告 - SQL错误:ORA-00984:此处不允许使用列 00984. 00000 - "栏目不允许在这里"

你知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

VALUES子句中使用未识别的变量时会出现此类错误。可能您的变量LOOP_COUNTER未被声明或写入错字。

答案 1 :(得分:1)

列SOURCE是一种varchar2,但是你提供了一个整数

答案 2 :(得分:0)

我们最近在实现一些复杂的数组绑定逻辑时遇到了这个错误,我的团队花了很多时间试图弄清楚为什么会出现这个错误 - 我们认为关键字是问题(我们的列列表是由业务为每个客户创建的并且每个表都是动态的。当然,这是愚蠢的事情。

如果您正在进行数组绑定,那么在设置查询时请确保值列表中的所有字段都有":"在他们面前,这是导致我们错误的原因(注意CompanyCode字段):

string query = "INSERT INTO SURVEY.COMPANY (RPT_INDUSTRY,SUBMISSIONID,COMPANYCODE,COLUMN) VALUES (:RPT_INDUSTRY,:SUBMISSIONID,COMPANYCODE,:COLUMN)"
command.CommandText = query;
command.CommandType = CommandType.Text;
command.BindByName = true;