我的oracle数据库中有一个表用户:
|------|--------------|-------------------------|----------------| | ID | NAME | EMAIL | BIRTHDAY | |------|--------------|-------------------------|----------------| | 1 | Joe | joe@test.com | 1986-10-13 | |------|--------------|-------------------------|----------------| | 2 | Julie | julie@test.com | 1990-05-07 | |------|--------------|-------------------------|----------------| | 3 | Dan | dan@test.com | 1988-10-20 | |------|--------------|-------------------------|----------------|
如何创建将返回的过程pr_export():
CREATE TABLE USERS(ID NUMBER, NAME VARCHAR2(50), EMAIL VARCHAR2(50), BIRTHDAY DATE, CONSTRAINT users_pk PRIMARY KEY (id));
INSERT INTO USERS VALUES (1, 'Joe', 'joe@test.com', to_date(1986-10-13, 'YYYY-MM-DD'));
INSERT INTO USERS VALUES (2, 'Julie', 'julie@test.com', to_date(1990-05-07, 'YYYY-MM-DD'));
INSERT INTO USERS VALUES (3, 'Dan', 'dan@test.com', to_date(1988-10-20, 'YYYY-MM-DD'));
我读了一个我可以使用的提示:
select * from user_tab_cols where table_name = 'USERS';
和游标,但我不知道如何创建过程。
谢谢!!!
答案 0 :(得分:1)
程序的前半部分pr_export()
可以使用DBMS_METADATA
- 界面:
SELECT dbms_metadata.get_ddl('TABLE','USERS') FROM dual;
输出如下:
CREATE TABLE "USERS" ("ID" NUMBER, "NAME" VARCHAR2(50 CHAR), "EMAIL" VARCHAR2(50 CHAR), "BIRTHDAY" DATE)
您可以使用以下参数调整输出:
dbms_metadata.set_transform_param (dbms_metadata.session_transform,'STORAGE',false);
dbms_metadata.set_transform_param (dbms_metadata.session_transform,'TABLESPACE',false);
dbms_metadata.set_transform_param (dbms_metadata.session_transform,'SEGMENT_ATTRIBUTES', false);
dbms_metadata.set_transform_param (dbms_metadata.session_transform,'REF_CONSTRAINTS', FALSE);
dbms_metadata.set_transform_param (dbms_metadata.session_transform,'CONSTRAINTS', FALSE);
dbms_metadata.set_transform_param (dbms_metadata.session_transform,'PRETTY',FALSE);
dbms_metadata.set_transform_param (dbms_metadata.session_transform,'SQLTERMINATOR',TRUE);
有关详情:http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_metada.htm
要在过程之外使用dbms_metadata.set_transform_param
,只需用匿名块包围它:
BEGIN
dbms_metadata.set_transform_param(...);
END;
/