[英]I am trying to access the data stored in a snowflake table using python sql. Below is the columns given below i want to access
[英]I want to parameterize TABLE_TO_BE_DELETED table in below stored PROC
但不是通过获取参数变量,我有一个表,其中包含所有表信息,我想一个接一个地获取表名完成删除获取另一个表名
开始
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
loop1: WHILE SQLSTATE = '00000' 做
从 ABC.TABLE_TO_BE_DELETED 删除其中 ID 在
(从 ABC.ID_DIM 中选择 ID)仅使用 UR 获取第一个 2000000 行;
IF SQLSTATE = '02000' THEN -- 未找到
离开循环1;
万一;
犯罪;
结束;
结尾@
我要做的是在 cursor 中获取表的结果,然后循环它们
类似的东西:
DECLARE Tables_cursor CURSOR FOR SELECT table_name FROM table_of_tables
OPEN Tables_cursor
FETCH NEXT FROM Tables_cursor INTO @table_name
DELETE FROM @table_name where ID in
(select ID from ABC.ID_DIM ) FETCH FIRST 2000000 ROWS ONLY WITh UR;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Tables_cursor INTO @table_name
END
我从未使用过,但我认为它会是这样的:
EXEC SQL DECLARE C1 CURSOR FOR
SELECT tablename FROM table_of_tables
EXEC SQL OPEN C1;
DO WHILE (SQLCODE = 0);
EXEC SQL FETCH C1 INTO :TABLE_NAME
DELETE FROM TABLE_NAME as curentTable where ID in
(select ID from ABC.ID_DIM ) FETCH FIRST 2000000 ROWS ONLY WITh UR;
END;
EXEC SQL CLOSE C1;
对于动态列表中多个表的大量删除行,如果我的目标正确的话。
BEGIN
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
FOR V AS C1 CURSOR WITH HOLD FOR
SELECT 'DELETE FROM (SELECT 1 FROM ' || TABNAME || ' T WHERE EXISTS (SELECT 1 FROM ABC.ID_DIM D WHERE D.ID = T.ID) FETCH FIRST 2000000 ROWS ONLY WITH UR)' AS STMT
FROM TABLE_WITH_COLUMN_TABNAME
DO
L1: LOOP
EXECUTE IMMEDIATE V.STMT;
IF SQLSTATE = '02000' THEN LEAVE L1; END IF;
COMMIT;
END LOOP;
END FOR;
END@
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.