当我在Oracle shell中运行以下命令时,它运行正常
truncate table table_name
但是当我试图把它放在一个存储过程
CREATE OR REPLACE PROCEDURE test IS BEGIN truncate table table_name; END test; /
它失败
ERROR line 3,col 14,ending_line 3,ending_col 18,Found 'table',Expecting: @ ROW or ( or . or ; :=
为什么?
谢谢,
Klas Mellbourn
Oracle PL / sql中的所有DDL语句应在语句之前使用Execute Immediate。因此,您应该使用:
execute immediate 'truncate table schema.tablename';