gpt4 book ai didi

sql - 创建具有多个嵌套开头的存储过程

转载 作者:行者123 更新时间:2023-12-02 17:38:18 24 4
gpt4 key购买 nike

如何在一个过程中放置​​多个“开始”来删除和创建表?

我的尝试-

CREATE PROCEDURE procCreateCarTable
IS
BEGIN

BEGIN
EXECUTE IMMEDIATE 'DROP TABLE CARS';
END;

COMMIT;

BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE CARS (ID VARCHAR2(1), NAME VARCHAR2(10), TITLE VARCHAR2(10))';
COMMIT;
END;
END;

一个接一个执行工作,但在创建此过程时出现以下错误 -

ORA-06550: line 5, column 1:
PLS-00103: Encountered the symbol "END"
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:

这是我在下面的评论中提到的工作的 SQL 过程 -

CREATE PROCEDURE procCreateCarTable
IS
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE CARS';
EXCEPTION WHEN OTHERS THEN NULL;
EXECUTE IMMEDIATE 'CREATE TABLE CARS (ID VARCHAR2(1), NAME VARCHAR2(10), TITLE
VARCHAR2(10))';
COMMIT;
END;

我添加了一个异常以防表 CARS 不存在,但现在我下面的最新过程失败了 -

CREATE PROCEDURE procCreateCarTable
IS
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE CARS';
EXCEPTION WHEN OTHERS THEN NULL;
EXECUTE IMMEDIATE 'CREATE TABLE CARS (ID VARCHAR2(1), NAME VARCHAR2(10), TITLE
VARCHAR2(10))';
EXECUTE IMMEDIATE 'DROP TABLE TRUCKS';
EXCEPTION WHEN OTHERS THEN NULL;
EXECUTE IMMEDIATE 'CREATE TABLE TRUCKS (ID VARCHAR2(1), NAME VARCHAR2(10), TITLE
VARCHAR2(10))';
COMMIT;
END;

关于为什么我的最新程序失败,我能想到的唯一原因是另一个“异常”。我确实想要另一个在那里,这样程序仍然可以创建 TRUCKS 表。有什么建议吗?

最佳答案

通过反复试验,我创建了程序:

CREATE PROCEDURE procCreateCarTable
IS
BEGIN
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE CARS';
EXCEPTION WHEN OTHERS THEN NULL;
EXECUTE IMMEDIATE 'CREATE TABLE CARS (ID VARCHAR2(1), NAME VARCHAR2(10), TITLE
VARCHAR2(10))';
END;
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE TRUCKS';
EXCEPTION WHEN OTHERS THEN NULL;
EXECUTE IMMEDIATE 'CREATE TABLE TRUCKS (ID VARCHAR2(1), NAME VARCHAR2(10), TITLE
VARCHAR2(10))';
END;
END;

关于sql - 创建具有多个嵌套开头的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048279/

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