我想在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
提前感谢您的帮助
谢谢你们项目工作。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'
您的查询似乎很好。只需执行它。