我正在尝试将数据插入到我为数据仓库创建的时间维度表中 . 我设法将数据输出到服务器但无法插入表中 . I have supplied partial code that reproduces the same error . 我尝试过多种方式,包括:
-
将行类型从表名更改为游标名(相同错误) .
-
将游标(c1)放入SELECT语句中的/ AS变量中(相同的错误) .
我已附上运行代码的屏幕截图,使用DBMS_OUTPUT.PUT_LINE将其成功打印到屏幕上 .
Screenshot of successful Anonymous Block completed
The below code produces the following error report: ORA-06550:Line 15, column 17: PL/SQL:ORA-00913: too many values ORA-06550: line 15, column 5: PL/SQL: SQL Statement ignored
---以下脚本填充标准日历的时间维度表 . ---
DECLARE ---为时间维度表中的列声明游标---
cursor c1 is SELECT
DAY_ID,DAY_TIME_SPAN,DAY_END_DATE AS r_time
FROM time_calendar_dim_2;
- 游标的循环变量(c1)在多列中插入值 -
r_time c1%rowtype;
BEGIN
---启动循环以插入多行 -
FOR r_time IN c1 LOOP
---将值插入时间维度表---
INSERT INTO time_calendar_dim_2(DAY_ID,DAY_TIME_SPAN,DAY_END_DATE)
VALUES
(SEQ_Time_Dim_IDSTART.nextval,r_time.DAY_ID,r_time.DAY_TIME_SPAN,r_time.DAY_END_DATE);
**END LOOP;
END;**
/
1 回答
据推测,这一行:
失败是因为你提供的值多于你的
time_calendar_dim_2
列(如果没有time_calendar_dim_2的DDL语句,很难说 .此外,您应始终在
INSERT
语句中显式枚举目标列,而不是使用
否则,如果添加或删除表中的列,或者(更糟糕的是)列排序不符合您的预期,您就会感到非常惊讶 .