我想在oracle sql上获取命令

本文关键字:获取 命令 sql oracle | 更新日期: 2023-09-27 18:33:33

我在Oracle DB上寻求命令的帮助。

现在我不靠近那个数据库,所以我不能尝试任何事情。

我会

在纸上写下你的答案,我会尝试它们并让你知道。

现在一些信息:

我使用 c# OLE 连接到数据库的 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'"

编辑:删除了如果存在(我将获取所有表,对于每个表,我将添加删除表查询(

但是它在 oracle 上是如何的(现在我会保留它,我会在明天早上 9-11 小时后通知您,我将更新这个主题(

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

当我找到它时如何检查

           **"IDENT_SEED ,IDENT_INCR ,IDENT_CURRENT"**

最后一件事:

我如何从每个表中获取信息,例如:

column_name, data_type, is_nullable, character_maximum_length

提前感谢您的帮助

我想在oracle sql上获取命令

谢谢你们项目工作。versiob 是 11.42,所以没有自动插入一切都完美无缺所有列信息都有效主键工作

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';

提供有关表列的详细信息

并且 Oracle 中没有版本小于 12c 的标识列之类的东西。您使用的是 12c 吗?

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'

您的查询似乎很好。只需执行它。