【发布时间】:2018-04-14 17:40:43
【问题描述】:
我是 PL/SQL 的新手,正在尝试创建一个存储过程,该过程将使用以下代码填充表:
DROP TABLE Times CASCADE CONSTRAINTS;
CREATE TABLE Times (
sale_day DATE NOT NULL,
day_type VARCHAR2(50) NOT NULL,
PRIMARY KEY (sale_day));
CREATE OR REPLACE PROCEDURE Time_Procedure
AS
l_sale_date date;
temp_value varchar2(5);
CURSOR c1 IS SELECT SALE_DATE FROM SALES;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO l_sale_date;
EXIT WHEN c1%NOTFOUND;
SELECT to_char(to_date(l_sale_date), 'DY') into temp_value from
dual;
IF l_sale_date LIKE '01-JAN-%' OR l_sale_date LIKE '21-JAN-%' OR
l_sale_date LIKE '18-FEB-%' OR l_sale_date LIKE '28-MAY-%'
OR l_sale_date LIKE '04-JUL-%' OR l_sale_date LIKE '03-SEP-%' OR
l_sale_date LIKE '08-OCT-%' OR l_sale_date LIKE '11-NOV-%'
OR l_sale_date LIKE '22-NOV-%' OR l_sale_date LIKE '25-DEC-%'
THEN
INSERT INTO Times values(l_sale_date,'Holiday');
ELSE IF temp_value='MON' OR temp_value ='TUE' OR temp_value='WED' OR
temp_value='THU' OR temp_Value='FRI' THEN
INSERT INTO Times values(l_sale_date,'Weekday');
ELSE
INSERT INTO Time values(l_sale_date,'Weekend');
END IF;
END LOOP;
CLOSE c1;
END;
/
但我不断收到以下错误:
行/列错误
20/1 PL/SQL:忽略 SQL 语句
20/13 PL/SQL:ORA-00942:表或视图不存在
我一直在研究这个问题,但无法弄清楚我的代码有什么问题导致错误。
【问题讨论】:
-
20/13 PL/SQL: ORA-00942: table or view does not exist在第 13 行:CURSOR c1 IS SELECT SALE_DATE FROM SALES;- 表 sales 不存在 - 错误消息很清楚。 -
@krokodilko:错误在第 20 行第 13 列,而不是相反。此外,行号从过程的第一行开始。假设
IF语句中的所有这些条件都在同一行,那么第 20 行就是INSERT INTO Time ...行。这里的错误很明显:表名拼写错误。 -
问题标题中的错误信息与问题中的错误信息不同。你解决了这个问题吗?