我遇到ORA-00942错误的问题,说表格不存在。确实没有,但在我得到错误的那一点之前,它应该是创建表格,如果它不存在的话。因此,当它到达那一点时,表应该在那里:
BEGIN
SELECT COUNT(*) INTO tCount
FROM user_tables
WHERE table_name='MY_TABLE';
IF tCount=0 THEN
EXECUTE IMMEDIATE 'CREATE TABLE MY_TABLE
(T_ID NUMBER(38,0),
T_DATE DATE,
T_COUNT NUMBER(38,0),
CONSTRAINT MY_TABLE_pk PRIMARY KEY (T_ID,T_DATE) )';
END IF;
LOOP
FOR idx IN 1 .. CursorTable.COUNT LOOP
SELECT COUNT(*) INTO pk_check
FROM MY_TABLE
WHERE T_ID=CursorTable(idx).T_ID AND T_DATE=CursorTable(idx).T_DATE;
IF (pk_check=0) THEN
INSERT INTO MY_TABLE
(T_ID,
T_DATE,
T_COUNT)
VALUES
(CursorTable(idx).T_ID,
CursorTable(idx).T_DATE,
CursorTable(idx).T_COUNT);
END IF;
END LOOP;
END LOOP;
END;
/
答案 0 :(得分:0)
您遇到此问题,因为您创建的表格以及随后的选择(LOOP)位于同一个BEGIN ... END块中。
BEGIN语句不同于使用BEGIN关键字启动BEGIN ... END复合语句。后者不会导致隐式提交。从(http://dev.mysql.com/doc/refman/5.1/en/implicit-commit.html)
引用尝试将选择(LOOP)移到BEGIN..END之外,它应该可以正常工作。