gpt4 book ai didi

sql - 如何在存储过程中使用 DROP TABLE 等命令

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

我编写了一个脚本,计划在夜间运行以复制昨天的表,删除昨天的表,创建新表,然后比较更改。作为一项计划任务,这工作得很好,但我真的很难找到一种允许用户为了测试目的而动态执行它的方法。

我真正想做的是将其全部打包到一个存储过程中,因为我有一个 eForm 工具,它可以轻松地允许用户(非常非技术性)通过单击来执行该过程。

这是脚本开始的示例。任何人都可以帮我将其硬塞到存储过程中,因为它显然不会接受像 DROP TABLE 这样的命令作为标准。

谢谢。

DROP TABLE SQL2005TEST.ABSENCEFULLDATADIFF_YESTERDAY;
DROP TABLE SQL2005TEST.ABSENCELATESTSTART_YESTERDAY;
DROP TABLE SQL2005TEST.ABSENCELATESTEND_YESTERDAY;

CREATE TABLE SQL2005TEST.ABSENCEFULLDATADIFF_YESTERDAY
AS SELECT * FROM SQL2005TEST.ABSENCEFULLDATADIFF;

CREATE TABLE SQL2005TEST.ABSENCELATESTSTART_YESTERDAY
AS SELECT * FROM SQL2005TEST.ABSENCELATESTSTART;

CREATE TABLE SQL2005TEST.ABSENCELATESTEND_YESTERDAY
AS SELECT * FROM SQL2005TEST.ABSENCELATESTEND;

最佳答案

CREATE OR REPLACE PROCEDURE proc_name AS
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE SQL2005TEST.ABSENCEFULLDATADIFF_YESTERDAY';
.....
EXECUTE IMMEDIATE 'CREATE TABLE SQL2005TEST.ABSENCELATESTEND_YESTERDAY
AS SELECT * FROM SQL2005TEST.ABSENCELATESTEND';
....
....
EXCEPTION
....
....
END;

EXECUTE IMMEDIATE 语句在 PL/SQL block 、存储过程或包中执行动态 SQL 语句或匿名 PL/SQL block 。如果您需要运行 DROP 、 CREATE TABLE 等 DDL 语句,则更具体地使用此方法。您无法从 PL/SQL 中将 DDL 命令作为 DML 语句执行,因此唯一的方法是动态SQL。更多信息herehere .

关于sql - 如何在存储过程中使用 DROP TABLE 等命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12801533/

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