我想弄清楚如何創建一個循環截斷只截斷(或刪除)在特定表中的數據。有30個左右的表需要被截斷,我想避免使用truncate語句列表。我似乎無法找到任何這樣做的好例子,無論我嘗試什麼,我都會得到一個「正確的截斷」錯誤。SQL Anywhere 11 - 循環切分特定表?
例1:
FOR anlyc_tables AS curs CURSOR FOR
SELECT table_name FROM systable WHERE table_name LIKE 'table_to_truncate_prefix%'
DO EXECUTE (
'TRUNCATE TABLE ' + table_name
);
END FOR;
這一個動作沒有錯誤,但在0.078秒完成,實際上並沒有什麼截斷。
實施例2:
ALTER PROCEDURE truncate_analytics()
BEGIN
DECLARE @table_name VARCHAR;
DECLARE curs DYNAMIC SCROLL CURSOR FOR SELECT table_name FROM systable WHERE table_name LIKE 't_anlyc%';
OPEN curs WITH HOLD;
FETCH NEXT curs INTO @table_name;
WHILE(sqlstate = 0) LOOP
FETCH NEXT curs INTO @table_name;
TRUNCATE TABLE table_name;
END LOOP;
END
GO
CALL truncate_analytics()
GO
結果中的 「右截斷」 錯誤和表不被截斷。
我想我在這裏錯過了一些非常明顯的東西,但我沒有這樣的SQL腳本經驗,並且似乎無法找到任何有效的示例來證明它甚至有可能。
任何人都可以指向正確的方向嗎?