2014-10-09 83 views
2

我有这个查询。为什么TOAD和SQLPlus中的结果有所不同?

select 
    dbms_metadata.get_ddl('USER', username) || '/' usercreate 
from 
    dba_users where username = 'NSAGUN'; 

在TOAD中,我收到了这段文字。 (使用SAVE AS制表符分隔)

USERCREATE 

    CREATE USER "NSAGUN" IDENTIFIED BY VALUES '1EE5F58CB716B194' 
     DEFAULT TABLESPACE "PIN01" 
     TEMPORARY TABLESPACE "PINTEMP" 
/

但在sqlplus我只得到这样的:

USERCREATE 
-------------------------------------------------------------------------------- 

    CREATE USER "NSAGUN" IDENTIFIED BY VALUES '1EE5F58CB716B194' 
     DEFAULT T 

这是为什么?我怎样才能使SQLPlus中的输出与TOAD中的输出相同?

SQL中使用这些设置

回答

3

尝试* Plus中执行查询之前:

set long 1000000 
set longchunk 1000000 
set linesize 200 

dbms_metadata.get_ddl函数返回一个CLOB值和默认SQL*Plus sets the LONG variable to 80 bytes

+0

你能解释为什么使用这些吗? :)谢谢@Marco – 2014-10-09 07:45:19

+0

@NorieCrisSagun,看到我的答案。 – 2014-10-09 07:52:11

1
SQL> set long 1000000 
SQL> set pagesize 0 
SQL> SELECT 
    2  dbms_metadata.get_ddl('USER', 'LALIT') || '/' usercreate 
    3 from 
    4  dba_users where username = 'LALIT' 
    5/

    CREATE USER "LALIT" IDENTIFIED BY VALUES 'S:F10EA8C6778ACE16430E4714FE8C41CFB 
2C9E5BC73ADDC503E134EA91AF9;H:076ADC10B6F6540DEEB030DF6C97A752;C6F71E6F6BA0F4BD' 

     DEFAULT TABLESPACE "USERS" 
     TEMPORARY TABLESPACE "TEMP"/ 


SQL> 

LONG {80 | N}

Set the maximum width (in chars) for displaying and copying LONG values. 

SET PAGES [IZE] {14 | N}

设置行的输出的每一页在iSQL * Plus上的数量,并且在命令行和Windows GUI输出的每一页上的 行数。您可以将PAGESIZE设置为零以禁止所有标题,页面 中断,标题,最初的空白行以及其他格式的 信息。

+0

我已经将它制作成脚本,并且我想在日志中生成相同的输出(我使用spool)。但是我在每行之后都会留下空白。它可以格式化为SQLPlus中的输出与我的脚本生成的日志中的输出相同吗? – 2014-10-09 08:34:34

+1

'设置trimspool on' – 2014-10-09 08:51:29

相关问题