2014-10-09 58 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

相關問題