database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 11946 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 11946
SQL*Plus 에서 치환변수 및 사용자 정의변수 사용하기
작성자
정재익(advance)
작성일
2002-09-07 21:31
조회수
12,105

치환변수(Substitution Variable)

-----------------------------------

1. 일시적으로 값을 저장하기위해 SQL*Plus의 치환변수를 사용한다.

a. 단일 엠퍼센드(&)

- 사용자는 단일엠퍼센드가 앞에 붙은 치환변수를 써서 동적으로 행을

제한한다.

- 명령이 실행될때마다 사용자에게 입력을 요구한다.

 

SQL>select id, last_name, salary

from s_emp

where dept_id = &department_number;

 

Enter value for department_number: 31

 

 

SQL>select id, &column_name

from s_emp

where &condition;

 

Enter value for column_name : total

Enter value for condition : payment_type = 'CASH'

 

 

b. 이중 엠퍼센드 치환변수(&&)

- 매번 사용자에게 Prompt하지않고 변수값을 재사용하려 할때 사용한다.

- 프롬프트는 한번만 나타남

- SQL*Plus에서는 입력된 값을 저장하고 해당 변수 이름을 참조할때마다

값을 재사용한다.

 

SQL>select id, &&column_name

from s_ord

order by &column_name;

 

Enter value for column_name : total

 

c Set Verify명령

SQL문장상에 대한 변경사항을 확인 할려면 SQL*Plus의 SET VERIFY 명령을 사용한다. SET VERIFY를 ON으로 설정하면 SQL*Plus는 치환변수를 값으로 바꾸기 전후의 값을 출력한다.

 

 

SQL*Plus에서 사용자변수정의

 

 

1. 두개의 SQL명령을 사용하여 변수를 미리 정의한다.

- DEFINE : CHAR Data유형의 사용자 변수생성, UNDEFINE명령으로 해제함

- ACCEPT : 사용자의 입력을 읽어에 저장

- 두명령모두 변수가 존재하지 않을때는 변수를 생성하며,존재할경우엔

자동으로 변수값을 재정의한다.

- SQL*Plus는 이중 엠퍼센드에대해 DEFINE명령을 실행한다.

- DEFINE 사용시 한개의 공백이 필요하면 공백을 단일 따옴표로

묶어야 한다.

- ACCEPT 명령에서 치환변수를 참조할때 SQL*Plus 치환변수에 &를

붙이면 안된다.

 

a. ACCEPT

- 사용자로부터 입력값을 받아들일때 작성

ACCEPT p_dname PROMPT 'Provide the department name: '

 

- Number또는 Date DataType의 변수를 명시적으로 정의한다.

ACCEPT p_salary NUMBER PROMPT 'Salary Amount : '

 

- 보안상의 이유로 사용자의 입력을 숨길때

ACCEPT passwd CHAR PROMPT 'PassWord : ' HIDE

 

예>

SQL> select ename

2 from emp

3 where job like '%&myJob%';

Enter value for myjob: CLERK

old 3: where job like '%&myJob%'

new 3: where job like '%CLERK%'

 

ENAME

----------

SMITH

ADAMS

JAMES

MILLER

 

SQL> set echo off

SQL> accept myJob prompt ' Enter Job : '

Enter Job : CLERK

SQL> select ename

2 from emp

3 where job like '%&myJob%';

old 3: where job like '%&myJob%'

new 3: where job like '%CLERK%'

 

ENAME

----------

SMITH

ADAMS

JAMES

MILLER

 

SQL> set verify off

SQL> accept myJob prompt ' Enter Job : '

Enter Job : CLERK

SQL> select ename

2 from emp

3 where job like '%&myJob%';

 

ENAME

----------

SMITH

ADAMS

JAMES

MILLER

 

 

b. UNDEFINE을 실행하거나 SQL*Plus를 빠져나올때까지 존재

DEFINE명령으로 내용을 확인할수 있다.

세션마다 특정변수를 지정할려면 변수가 시스템 시동시에 생성될수 있게

login.sql 파일을 이용하면 된다.

 

예>

SQL> define myJob = CLERK

SQL> define dname

symbol dname is UNDEFINED

SQL> define myJob

DEFINE MYJOB = "CLERK" (CHAR)

SQL> select ename

2 from emp

3 where job like '%&myJob%';

 

ENAME

----------

SMITH

ADAMS

JAMES

MILLER

[Top]
No.
제목
작성자
작성일
조회
11949제어파일(Control File) 관리
정재익
2002-09-07
10445
11948IMPORT and EXPORT
정재익
2002-09-07
14230
11947객체권한부여에 관하여
정재익
2002-09-07
8827
11946SQL*Plus 에서 치환변수 및 사용자 정의변수 사용하기
정재익
2002-09-07
12105
11945단일행 수치 함수
정재익
2002-09-07
9899
11944단일행 문자 함수 정리
정재익
2002-09-07
10577
11943PL/SQL 자료 정리 (2)
정재익
2002-09-07
31424
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다