gpt4 book ai didi

oracle - PL/SQL EXECUTE IMMEDIATE inside LOOP(截断模式中所有表的过程)

转载 作者:行者123 更新时间:2023-12-02 02:13:57 25 4
gpt4 key购买 nike

我需要创建一个过程,该过程将从一个模式中的表中删除所有数据。我尝试类似的事情

CREATE OR REPLACE PROCEDURE CLEAR_ALL
IS
sql_truncate VARCHAR2(50);

cursor c1 is
SELECT table_name
FROM all_tables
WHERE owner = 'KARCHUDZ_S';
BEGIN
sql_truncate := 'TRUNCATE TABLE :text_string';
FOR table_name in c1
LOOP
EXECUTE IMMEDIATE sql_truncate USING table_name;
END LOOP;
END CLEAR_ALL;

但是它给了我两个我无法理解和修复的错误。

Error(13,7): PL/SQL: Statement ignored

Error(13,44): PLS-00457: Statment must be type of SQL <-- (This error i had to translate, cause i use University Oracle 11g base which have Polish lang)

最佳答案

为什么不直接生成语句并调用它,就像这样?

CREATE OR REPLACE PROCEDURE CLEAR_ALL
IS
vs_statement VARCHAR2(100);

cursor c1 is
SELECT table_name
FROM all_tables
WHERE owner = 'KARCHUDZ_S';
BEGIN
FOR table_rec in c1
LOOP
vs_statement := 'TRUNCATE TABLE ' || table_rec.table_name;
EXECUTE IMMEDIATE vs_statement;
END LOOP;
END CLEAR_ALL;

关于oracle - PL/SQL EXECUTE IMMEDIATE inside LOOP(截断模式中所有表的过程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27258004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com