我想删除 HSQL 数据库特定模式中可用的所有视图并重新创建它们。那么如何删除 HSQL DB 特定模式中存在的所有视图呢?
尝试过这个:
DECLARE view_name VARCHAR(256);
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE cur CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'your_schema_name';
OPEN cur;
read_loop: LOOP
FETCH cur INTO view_name;
SET @drop_stmt = 'DROP VIEW IF EXISTS ' || view_name;
EXECUTE IMMEDIATE @drop_stmt;
END LOOP;
CLOSE cur;
HSQLD 不允许在存储过程中使用 DROP 语句。您需要用 Java 编写代码并为每个视图执行
DROP VIEW anyview IF EXISTS CASCADE
。请注意,您需要关键字 CASCADE,因为如果没有此关键字,则无法删除引用其他视图的视图。