Error(5,1): PLS-00103:
Encountered the symbol "CREATE" when expecting one of the following:
( begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge
在我写的代码之下。
CREATE OR replace FUNCTION First_three_records
RETURN NUMBER AS
BEGIN
CREATE TEMPORARY TABLE temp_emp ON COMMIT DROP AS
SELECT *
FROM emp
WHERE deptno=20;
INSERT INTO tgt
SELECT *
FROM temp_emp;
END;
答案 0 :(得分:2)
Oracle没有本地临时表,除非使用动态SQL,否则无法在PL / SQL块中创建对象;这很少是必要或者是个好主意。您的架构应该以受控方式创建,而不是动态创建。
你可以使用一个集合,但这里没有意义,你可以这样做:
INSERT INTO tgt
SELECT *
FROM emp
WHERE deptno=20;
我不确定你为什么要将它包装在一个函数中;您的函数也被声明为返回一个数字,但您没有return
语句。