在plsql中使用内部联接选择查询以进行循环失败

时间:2018-08-13 06:03:53

标签: oracle plsql cascade

这是我的plsql块

BEGIN
  FOR c IN ( SELECT T.table_name FROM user_tables T INNER JOIN (SELECT distinct to_char(SYSTEM_DATE,'yyyymmdd') as sys_date FROM *) ON T.table_name LIKE '%' || sys_date || '%' )
  LOOP
    EXECUTE IMMEDIATE 'DROP TABLE ' || c.table_name || ' CASCADE';
  END LOOP;
END;

我正在丢失关键字错误

Error report:
ORA-00905: missing keyword
ORA-06512: at line 4
00905. 00000 -  "missing keyword"
*Cause:    
*Action:

您能告诉我代码中有什么问题吗?

2 个答案:

答案 0 :(得分:2)

如果您看看Standard DOCS

您将了解您需要将DROP语句写为-

DROP TABLE TABLE_NAME CASCADE CONSTRAINTS;

您的SQL缺少CONSTRAINTS关键字

答案 1 :(得分:1)

DROP TABLE ' || c.table_name || ' CASCADE this

中的工作声明
  

DROP TABLE名称[,...] [级联|限制]

但不在PostgreSQL中,该期望没有CASCADE或CASCADE CONSTRAINTS子句:

  

指定CASCADE CONSTRAINTS,以删除所有引用完整性约束,这些约束引用了删除表中的主键和唯一键。如果省略此子句,并且存在此类参照完整性约束,则数据库将返回错误,并且不会删除该表。