sql - 他不执行该程序。第一步失败。甲骨文
问题描述
我在 oracle 中创建了删除我的表并从我的视图中创建同一个表的过程。但是我在运行这个程序时遇到了一些问题。删除表的第一步有效,但复制它不起作用。
这是一个很好的程序吗?
create or replace PROCEDURE transfer_table (table_name IN VARCHAR2,tableFrom IN VARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ' || table_name;
EXECUTE IMMEDIATE 'CREATE TABLE ' || table_name || ' AS SELECT * FROM ' || tableFrom;
commit;
END transfer_table;
接下来,我单击此过程并更改变量,然后查看并单击确定,但只有删除表的第一步有效。我究竟做错了什么 ?
解决方案
如果您创建的表不存在,我认为您需要捕获错误。
create or replace PROCEDURE transfer_table (table_name IN VARCHAR2,tableFrom IN VARCHAR2) IS
BEGIN
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ' || table_name;
EXCEPTION WHEN OTHERS THEN
NULL;
END;
EXECUTE IMMEDIATE 'CREATE TABLE ' || table_name || ' AS SELECT * FROM ' || tableFrom;
commit;
END transfer_table;
推荐阅读
- c# - 如何动态指定实体以使用 EntityFramework 检索数据?
- c# - 如何检查数据库中是否存在数据并显示错误
- python - 树莓派连接到 Firebase
- html - 如何在 Bootstrap 导航栏品牌文本下放置字幕
- mysql - 嵌套选择查询更高效
- python - 来自源代码的 TensorFlow 的工作速度比从 pip 安装的版本慢
- java - 在 Java 中清除 Artemis ActiveMQServer 队列
- node.js - 链码查询不同通道上的链码
- c# - 导致“InvalidCastExceptions”的多个异步 Cosmos DB 查询
- node.js - MONGODB_URI 未定义