当前位置: 首页 > 面试题库 >

在Oracle PL / SQL中创建或替换表

昌博易
2023-03-14
问题内容

我需要一个脚本来创建表,或者如果它已经存在,则将其删除,并在重新创建表时将其删除。经过一些研究,我发现CREATE OR REPLACE TABLE在pl / sql中不存在。所以我想出了这个脚本:

DECLARE
   does_not_exist   EXCEPTION;
   PRAGMA EXCEPTION_INIT (does_not_exist, -942);
BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE foobar';
EXCEPTION
   WHEN does_not_exist
   THEN
      NULL;
END;
/

CREATE TABLE foobar (c1 INT);

有没有适当的方法来实现此功能?


问题答案:

使用全局临时表似乎是一个更好的选择。但是,如果您坚持在运行时删除和重新添加表,则可以查询_TABLES视图之一(即USER_TABLES,DBA_TABLES,ALL_TABLES)以确定该表是否存在,如果存在,则将其删除,然后创建它:

SELECT COUNT(*)
  INTO nCount
  FROM USER_TABLES
  WHERE TABLE_NAME = 'FOOBAR';

IF nCount <> 0 THEN
  EXECUTE IMMEDIATE 'DROP TABLE FOOBAR';
END IF;

EXECUTE IMMEDIATE 'CREATE TABLE FOOBAR(...)';

分享并享受。



 类似资料:
  • 我想“创建或替换”postgres表的触发器。但是,没有这样的sql表达式。 我看到我可以先执行“

  • 为什么我会得到这个错误消息,尤其是在中唯一的列是varchar数据类型的情况下?

  • 本文向大家介绍SQL 创建临时表或内存表,包括了SQL 创建临时表或内存表的使用技巧和注意事项,需要的朋友参考一下 示例 PostgreSQL和SQLite 要创建会话本地的临时表: SQL服务器 要创建会话本地的临时表: 创建对所有人可见的临时表: 要创建一个内存表:            

  • 示例:/Hello/baby/Deneme//Hello2/ 输出:(/hello/)baby(/deneme/)(/hello2/)

  • 我是一个新手,我正在寻找类似于我从经典Android开发中知道的生成的BuildConfig类的东西。 我正在使用Gradle生成代码中需要的一些常量。 我可以在我的项目中找到两个BuildConfig文件,一个在和库中另一个名为。 我能够在BuildConfig的第一部分中写下一个常量,问题是,我无法从代码中引用它。 我错过了什么或做错了什么?

  • 问题内容: 我有一个包含以下各列的表 它具有诸如 是否可以在postgres中执行sql select语句,该语句将返回每一行以及具有下一个最高order_id的ID?所以我想要类似… 谢谢 问题答案: