create or replace procedure BackUpData(taskCode varchar2)
is
VCOUNT1 INT;
VCOUNT2 INT;
BKNAME VARCHAR(13);
SQLLOOP VARCHAR2(512);
begin
SELECT '_'||TO_CHAR(SYSDATE,'MMdd') INTO BKNAME FROM DUAL;
for tableName in (select distinct tabname from T0 where col = taskCode )
loop
BEGIN
SELECT COUNT(1) INTO VCOUNT1 FROM USER_ALL_TABLES WHERE UPPER(TABLE_NAME) = UPPER(tableName.Tabname);
SELECT COUNT(1) INTO VCOUNT2 FROM USER_ALL_TABLES WHERE UPPER(TABLE_NAME) = UPPER(tableName.Tabname||BKNAME);
IF(VCOUNT1 > 0 and VCOUNT2 <= 0 ) THEN
SQLLOOP := 'CREATE TABLE '||tableName.Tabname||BKNAME||' AS SELECT * FROM '||tableName.Daif_Tabname;
EXECUTE IMMEDIATE (SQLLOOP);
END IF;
END;
END LOOP;
END;
Oracle 存储过程使用for循环并将循环变量作为表名执行sql
最新推荐文章于 2023-12-06 13:44:33 发布