oracle 查看建表语句
dbms_metadata.get_ddl(object_type=>'TABLE',name=>table_name)这个语句我会用,但是这个查询出来的create语句...
dbms_metadata.get_ddl(object_type => 'TABLE',name => table_name)
这个语句我会用,但是这个查询出来的create语句有些问题,一是不包含约束,二十多了什么附件信息,比如storage compress等。例子如下:
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17 CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS NOLOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "CRS_DATA"
我在aqua data studio里在表上右击可以查询到如下的sql,
CREATE TABLE BDPDCUSER.AR_TMP (
COD_FN_ENT CHAR(4 CHAR) NOT NULL,
NUM_SEQ_AR CHAR(17 CHAR) NOT NULL,
ID_SP CHAR(3 CHAR) NOT NULL,
)
这个包含了null等约束,而且没有附件信息,如果过想获取这个sql,该怎么用sql语句来实现呢?谢谢。
not null 确实显示,但是null不显示。我现在想着用shell脚本加工,但是也有个小问题。
dbms_metadata.get_ddl
本来直接执行输出是这样的
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17 CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
)
但是在shell执行是输出这样的
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17
CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
)
您知道怎么回事吗?谢谢。 展开
这个语句我会用,但是这个查询出来的create语句有些问题,一是不包含约束,二十多了什么附件信息,比如storage compress等。例子如下:
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17 CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS NOLOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "CRS_DATA"
我在aqua data studio里在表上右击可以查询到如下的sql,
CREATE TABLE BDPDCUSER.AR_TMP (
COD_FN_ENT CHAR(4 CHAR) NOT NULL,
NUM_SEQ_AR CHAR(17 CHAR) NOT NULL,
ID_SP CHAR(3 CHAR) NOT NULL,
)
这个包含了null等约束,而且没有附件信息,如果过想获取这个sql,该怎么用sql语句来实现呢?谢谢。
not null 确实显示,但是null不显示。我现在想着用shell脚本加工,但是也有个小问题。
dbms_metadata.get_ddl
本来直接执行输出是这样的
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17 CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
)
但是在shell执行是输出这样的
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17
CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
)
您知道怎么回事吗?谢谢。 展开
1个回答
展开全部
在sqlplus中执行以下命令:
set line 200 pages 50000 wrap on long 999999 serveroutput on
EXECUTEDBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);---去除storage等多余参数
select dbms_metadata.get_ddl('TABLE', 表名) from dual;
set line 200 pages 50000 wrap on long 999999 serveroutput on
EXECUTEDBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);---去除storage等多余参数
select dbms_metadata.get_ddl('TABLE', 表名) from dual;
更多追问追答
追问
谢谢,不过也没有加上 NULL NOT NULL等限制,AQ右键菜单应该也是执行某条或某些命令吧?您知道吗?
追答
我在本地试过,会显示not null的喔。没有用过AQ,但是这些IDE应该都是调用数据库的命令或函数的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询