非常簡單的一個PROCEDURE,COMPILER 也OK,但是一執行就會有
錯誤 ORA-00903: invalid table name
TABLE真的存在,為何說INVALID呢?
CREATE OR REPLACE PROCEDURE TEST2
IS
sql_stmt VARCHAR2 (4000);
tablen varchar2(10);
BEGIN
tablen := 'test1';
sql_stmt := 'TRUNCATE TABLE :1';
EXECUTE IMMEDIATE sql_stmt USING tablen ;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM);
END;
原因就是tablename 不能當作參數來使用,
改成下面的做法就OK了
CREATE OR REPLACE PROCEDURE TEST2
IS
sql_stmt VARCHAR2 (4000);
tablen varchar2(10);
BEGIN
tablen := 'test1';
sql_stmt := 'TRUNCATE TABLE ' || tablen;
EXECUTE IMMEDIATE sql_stmt;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM);
END;
FUNCTION 裡應該也是相同適用
文章標籤
全站熱搜
