【问题标题】:I want to get command on oracle sql我想在 oracle sql 上获取命令
【发布时间】:2015-02-04 19:51:47
【问题描述】:

我在 Oracle DB 上寻找一些关于命令的帮助。

现在我不在那个数据库附近,所以我不能尝试任何东西。

我会在纸上写下你的答案,我会尝试并告诉你。

现在提供一些信息:

我通过使用 C# OLE Con​​nect 使用 OLE 连接到数据库,我需要执行哪个命令来获取:

每个表的主键:

我已经获得了主键的 SQL,但我不知道如何执行它来更改转换内容

            "SELECT a.owner, a.TABLE_NAME, b.column_name
            FROM all_constraints a, all_cons_columns b
            WHERE a.constraint_type='P'
            AND a.constraint_name=b.constraint_name
            AND a.TABLE_NAME = 'CASTING'"

编辑:删除如果存在(我将获取所有表和 foreach 表我将添加删除表查询)

但是它是如何在 oracle 上的(现在我会保留它,明天早上 9-11 小时后我会告诉你我会更新这个主题)

我如何检查某些列 is_identity 是否意味着它是 auto_increment

当我找到它时如何检查

           **"IDENT_SEED ,IDENT_INCR ,IDENT_CURRENT"**

最后一件事:

我怎样才能从每个表中获取信息,像这样的信息:

column_name, data_type, is_nullable, character_maximum_length

提前感谢您的帮助

【问题讨论】:

    标签: c# sql oracle


    【解决方案1】:

    谢谢你们 项目工作。 版本是 11.42,所以没有自动增量 一切都完美无缺 所有列信息工作 主键工作

    【讨论】:

      【解决方案2】:

      Oracle 无法使用if exists table 子句删除表。作为最佳实践,只需删除表并使用

      忽略错误
      BEGIN
         EXECUTE IMMEDIATE 'DROP TABLE mytable';
      EXCEPTION
         WHEN OTHERS THEN
            NULL;
      END;
      

      如果您想收到通知,请使用,

      BEGIN
         EXECUTE IMMEDIATE 'DROP TABLE mytable';
      EXCEPTION
         WHEN OTHERS THEN
            IF SQLCODE != -942 THEN
               RAISE;
            END IF;
      END;
      

      关于表详情,查询ALL_TAB_COLUMNS

      并且,IDENTITY COLUMNS 可用于 Oracle 12c。你是哪个版本的?

      查询select * from v$version 以了解您的数据库版本。

      查询all_tab_identity_cols 以获取IDENTITY COLUMNS 的详细信息。

      SELECT table_name, 
             column_name,
             generation_type,
             identity_options
      FROM   all_tab_identity_cols
      WHERE  owner = 'TEST'
      ORDER BY 1, 2;
      

      编辑根据 OP 的要求,关于表的 PRIMARY KEY

      all_constraints 中,constraint_type 列的主键值为P。所以,在你的查询中,输入where constraint_type = 'P'

      您的查询似乎没问题。执行即可。

      【讨论】:

      • 我一到朋友就去试试看
      • 现在的最后一个问题是如何获取每个表的主键?我的查询会起作用吗???
      • all_constraints 中,constraint_type 列的主键值为P。所以,在你的查询中,输入where constraint_type = 'P'
      【解决方案3】:
      select count(*) 
      from all_tables 
      where table_name = 'YOUR_TABLE_NAME_IN_UPPERCASE';
      

      如果表不存在则返回 0(或者您的用户对此表没有任何权限)

      select column_name, data_type, nullable, data_length, data_scale, data_precision 
      from all_tab_columns where table_name = 'YOUR_TABLE_NAME_IN_UPPERCASE';
      

      提供有关表格列的详细信息

      并且在低于 12c 的 Oracle 中没有身份列这样的东西。你用的是 12c 吗?

      【讨论】:

      • 我不知道我是怎么知道的,它不会影响我的数据库,它是我朋友的数据库,我正在帮助他完成他的项目,我们想为 oracle 数据库建立备份,我怎么知道它是哪个版本?
      • @Asaf Shaazar SELECT version FROM V$INSTANCE under SYS user
      • 一到那里我会检查的
      • 现在的最后一个问题是如何获取每个表的主键?我的查询会起作用吗???
      • 谢谢你,我会试试,明天更新这个话题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      相关资源
      最近更新 更多