set heading on/off /* header가 display 여부 */
set pagesize 1000 /* page가 14마다 구분되지 않도록 크게 지정한다. */
set linesize 300 /* linesize도 record 길이만큼 지정하여 아래로 구분되지 않도록 한다. */
set echo off /* 명령이 display되지 않도록 한다. */
set term off /* 조회 결과가 화면에 나오지 않도록 한다. */
set verify off /* sql 실행시 old , new 값으로 치환되는 행을 보여주는 것을 안보이게한다.*/
set echo off /* a.sql 을 @a 라고 실행시 내용을 보지 않겠다 */
set feedback off /* 3 rows selected 라는 메시지 보지 않기 */
set feedback n /* 6개 이상 선택되었을 때 메시지를 내보낸다 defult : 6 */
set newpage n
set null text /* null 값을 다른 text로 표시한다. */
set space n /* 칼럼과 칼럼의 공백넣기 */
set underline '=' /* col 아래 표시 되는 것을 바꿀수 있다 SAL ==> SAL
--- ===
col username format a15 justify c hedading 'aaa' : 컬럼명 aaa가 중앙에 위치
col dts format a12 heading 'Default|Tablespace' :
col tablespace format a15 justify c trunc heading 'Tablespace' :
col value format a36 heading 'Value' justify l trunc : 길면 잘라라
col mgr line /* mgr을 만나면 새 라인으로 이동하여 프린트 한다.
col mgr clear /* 선택된 것만 설정된 값을 없앤다.
col ename noprint /* ename만 출력을 하지 말아라.
Col 칼럼이름 Heading 컬럼 이름 교체
Format
justify left, center, right
Clear 기억된 format를 지워라 (디폴트로)
New_Value 첫번째 값을 기억
Old_Value 마지막 값을 기억
NoPrint 해당 컬럼만 출력 하지 말아라
NewLine 해당 컬럼을 새로운 라인에 찍어라
TTiitle / BTitle
skip - 줄바꾸기
left
right
center
++++++++++++++++++++
noprint
++++++++++++++++++++
column r_ord noprint : 결과에서 해당 컬럼 안보이게 하기
col instance new_value V_INSTANCE noprint : v_instance에 값을 입력
[examle]
select instance from v$thread;
select instnace_name from v$instance where instance_name='&v_instance';
+++++++++++++++++++++++++
FOLD_BEFORE
+++++++++++++++++++++++++
COLUMN description FOLD_BEFORE : 라인을 내린다.
[Example]
select instance_number , instance_name from v$instance
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
1 oraking
SQL> set lines 190
SQL> col instance_name fold_before
SQL> select instance_number , instance_name from v$instance;
INSTANCE_NUMBER
---------------
INSTANCE_NAME
----------------
1
oraking
def file_name = 'users.sql'
def title = 'Basic Oracle Database User Information'
Rem 'set charwidth 108' in svrmgrl
+++++++++++++++++++
word_wrapped
+++++++++++++++++++
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'
-----------------
20070319 13:10:10
SQL> col aaa for a10 word_wrapped
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss') aaa from dual;
AAA
----------
20070319
13:10:28
++++++++++++++++++++++++++
변수 처리
++++++++++++++++++++++++++
variable Gubun varchar2(30)
variable Fac varchar2(30)
variable FrPeriod varchar2(30)
variable ToPeriod varchar2(30)
variable Prod varchar2(30)
variable Rte varchar2(30)
variable Ecode varchar2(30)
variable Para varchar2(30)
variable EqRte varchar2(30)
variable EqEcode varchar2(30)
exec :Gubun :='DAT'
exec :Fac :='M10'
exec :FrPeriod :='20051222'
exec :ToPeriod :='20051228'
exec :Prod :='HY5DU121622CTU'
exec :Rte :='512M-DDR1-DC-SUB3'
exec :Ecode :='1650A'
exec :Para :='ETRANY'
exec :EqRte :='DEFAULT'
exec :EqEcode :='DEFAULT'
+++++++++++++++++++++++++++++++++
sql 스크립내에서 변수로 값 받기
+++++++++++++++++++++++++++++++++
[example 1]
col acm new_value n_acm 이것은 acm이란 값을 n_acm에 대입하는것
col acm new_value n_acm
select sum(count) acm from table;
select 1-(a+&n_acm) from table;
[exampel 2]
--
-- file io info
--
col dbf heading 'Data File' format A38
col writes heading 'Write(k)' format 999,999
col reads heading 'Read(k)' format 999,999
col bwrites heading 'Blk|Write(k)' format 999,999
col breads heading 'Blk|Read(k)' format 999,999
col val1 new_val db_blk_size noprint
select value val1
from v$parameter
where name = 'db_block_size'
/
select a.file#||' '||
decode(ltrim(lpad(name, 25)), name, name,'..' || substr(lpad(name, 2000), -33)) dbf,
phywrts/1000 writes, (phywrts/&db_blk_size)/1000 bwrites,
phyrds/1000 reads, (phyrds/&db_blk_size)/1000 breads
from v$datafile a,
v$filestat b
where a.file# = b.file#
and name like '%&filename%'
order by 2 desc, 1 desc
/
[example 3]
--
-- freelist wait
--
column s_v format 999,999,999 heading 'Total Requests' new_value tnr
column count format 99999990 heading 'count' new_value cnt
column proc heading 'Ratio of waits'
PROMPT Current v$waitstat freelist waits...
PROMPT
set heading on;
prompt - This displays the total current waits on freelists
select class, count from v$waitstat where class = 'free list';
prompt - This displays the total gets in the database
select sum(value) s_v from v$sysstat
where name IN ('db block gets', 'consistent gets');
PROMPT Here is the ratio
select &cnt/&tnr * 100 proc from dual;
+++++++++++++++++
break on
+++++++++++++++++
break on deptno
select * from emp order by deptno; -- deptno 로 그룹을 지었다
( 여기서는 꼭 sort를 해야 한다.)
break on deptno page; -- page 별로 나누어서 그룹을 짓는다.
select deptno, ename, job from emp
order by deptno;
++++++++++++++++++++++++
compute
++++++++++++++++++++++++
Compute - Break한 것의 계산
Compute sum of 칼럼명1 칼럼명2 On Break break 된 칼럼이름
Avg
Min
Max
Count
compute sum label '부서별 합계' of sal on deptno
select deptno, ename, sal from emp
order by deptno;
DEPTNO ENAME SAL
--------- ---------- ---------
10 CLARK 2450
KING 5000
MILLER 1300
********* ---------
부서별 합 8750