sql - 我想在下面存储的 PROC 中参数化 TABLE_TO_BE_DELETED 表
问题描述
但不是通过获取参数变量,我有一个表,其中包含所有表信息,我想一个接一个地获取表名完成删除获取另一个表名
开始声明SQLSTATE
CHAR(5) DEFAULT '00000';
loop1: WHILE SQLSTATE = '00000' DO
delete from ABC.TABLE_TO_BE_DELETED where ID in
(select ID from ABC.ID_DIM) FETCH FIRST 2000000 ROWS ONLY WITH UR;
IF SQLSTATE = '02000' THEN -- 未找到
LEAVE loop1;
万一;
犯罪;
结束;
结尾@
解决方案
对于动态列表中多个表的大量删除行,如果我的目标正确的话。
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@
推荐阅读
- google-cloud-platform - Airflow 使用 git 存储库中的代码运行 dataproc 作业
- python-3.x - 如何使用具有管理员权限的子进程停止和启动 Windows 服务?
- angular - 如何在 IONIC + Angular 中高效地拥有多个子项目?
- tsql - 如何使用外键删除记录
- docusignapi - 如何使用身份验证配置企业 HTTP 代理
- javascript - 如何修复:“SyntaxError:JSON 中位置 0 的意外标记 u”错误
- linux - 回显时字符串中的字符被替换
- android - React-Native:错误无法安装应用程序。确保您正在运行 Android 模拟器
- javascript - jQuery/JavaScript 运算符等于 SQL LIKE %Example%
- indexing - 数据已编入索引后如何更改 solr 字段类型