2014-10-09 5 views
2

이 쿼리가 있습니다.TOAD와 SQLPlus의 결과가 다른 이유는 무엇입니까?

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

TOAD에서이 텍스트를 얻습니다.

USERCREATE 

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

을 (SAVE AS 탭으로 구분 사용)하지만 SQLPLUS에 난 단지이 얻을 :

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

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

왜 그입니다? 그리고 TOAD에서와 마찬가지로 SQLPlus에서 출력을 만들 수 있습니까?

답변

3

SQL에서 이러한 설정을 사용해보십시오 * 플러스 쿼리를 실행하기 전에 :

set long 1000000 
set longchunk 1000000 
set linesize 200 

dbms_metadata.get_ddl 함수는 CLOB 값을 반환하고 기본 SQL*Plus sets the LONG variable to 80 bytes으로.

+0

왜 이러한 것들이 사용되는지 설명해 주실 수 있습니까? :) thanks @ Marco –

+0

@ NorieCrisSagun, 내 대답을 참조하십시오. –

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 페이지 [IZE {14 | 여기서 n은}

ISQL * Plus를 출력의 각 페이지의 행의 수와 명령 줄 및 Windows GUI 출력의 각 페이지에 라인의 수를 설정합니다. PAGESIZE를 0으로 설정하여 모든 제목, 페이지 나누기, 제목, 초기 빈 줄 및 기타 서식 정보를 표시하지 않을 수 있습니다.

+0

스크립트로 만들었고 로그에서 동일한 출력을 생성하고 싶습니다 (저는 스풀을 사용합니다). 하지만 각 줄마다 공백이 생깁니다. 내 스크립트에서 생성 된 로그에서 SQLPlus의 출력이 동일한 방식으로 형식을 지정할 수 있습니까? –

+1

'set trimspool on' –