我尝试使用此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 - "栏目不允许在这里"
你知道如何解决这个问题吗?
答案 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;