【发布时间】:2021-04-28 18:15:11
【问题描述】:
这个问题的灵感来自this。
如前所述,我不想要 PL/SQL 的解决方案。我想要一个 1 或 2 个 SQL 语句来检查表是否存在,如果它不存在 - 创建它。
这样的语句将被插入 C++ 应用程序(不是脚本),所以我想要一个简单的 SQL 解决方案。如果不存在这样的解决方案(请这样说),我想要一个简单的字符串,我可以插入 C++ 代码并使用 SQLExecute() 或本机 Oracle 客户端 API 来执行这样的字符串。
尝试用谷歌搜索解决方案,我得到的结果可以在 shell 脚本或存储过程中使用。正如我在此处和上一个问题中所解释的那样 - 我的情况完全不同 - 我使用 C++ 工作并想要一个合适的解决方案。
【问题讨论】:
-
这就是 Oracle 的乐趣所在。对于很多问题,答案是存储过程。并且没有数据库解决方案是“仅限 C++”...您依赖数据库来获取东西,这只是另一种情况。
-
@PaulProgrammer,那么我该如何使用 Oracle?我已经有了其他 DBMS 的解决方案...
-
我不确定我是否理解这个问题。如果您使用原始 ODBC 调用,您可以将匿名 PL/SQL 块传递给
SQLPrepare,就像传递纯 SQL 语句一样。 PL/SQL 似乎是一个完全合适的解决方案。当然,您可以从 PL/SQL 块中获取单独的 SQL 语句,并从您的应用程序中按顺序执行它们。这种情况下,查询dba_|all_|user_tables判断表是否存在,然后有条件地执行DDL。 -
@JustinCave,所以有简单的
plain SQL解决方案吗?正如我所说 - 如果没有 1 或 2 条普通 SQL 语句,我将采用 PL/SQL 解决方案。另外,现在我正在编写 ODBC 解决方案,但计划接下来使用本机客户端。现在你说的是哪两个查询? -
这是对 meta 上正在讨论的一个封闭问题的(改写)转贴。 CREATE TABLE statement in Oracle
标签: oracle oracle11g ddl create-table