프린트 하기

OS 환경 : Oracle Linux 8.7 (64bit)

 

DB 환경 : Oracle Database 19.27.0.0

 

방법 : sqlplus에서 바인드 변수 사용법

sqlplus에서 바인드변수를 사용하는법을 설명함

 

 

간단한 예제

1
2
3
4
5
6
7
8
9
SQL> 
var b1 varchar2(20);
exec :b1 := 'hello_oracle';
 
select :b1 from dual;
 
:B1
------------------
hello_oracle

 

 

주의 사항
바인드 변수는 선언 시 지정한 데이터 타입에 맞는 값만 저장할 수 있음
따라서 숫자형 변수에 문자열을 넣거나 문자형 변수에 선언 길이를 초과하는 값을 넣으면 오류가 발생할 수 있음
CHAR는 고정 길이 특성상 남는 자리가 공백으로 채워질 수 있으므로 가변 길이 문자열에는 보통 VARCHAR2를 더 많이 사용함

 

 

사용 가능한 형식
varchar2 형식 : var b1 varchar2(20);
char 형식 : var c1 char(10);
nchar 형식 : var n1 nchar(20);
nvarchar2 형식 : var n2 nvarchar2(50);
clob 형식 : var c1 clob;
nclob 형식 : var nc1 nclob;
number 형식 : var n1 number;
binary_float 형식 : var f1 binary_float;
binary_double 형식 : var d1 binary_double;
refcursor 형식 : var rc refcursor;
blob 형식 : var b1 blob;

 

 

기타 예제들

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
-- 문자열
VAR b1 VARCHAR2(20);
EXEC :b1 := 'hello_oracle';
SELECT :b1 FROM dual;
 
:B1
------------------
hello_oracle
 
-- 숫자
VAR n1 NUMBER;
EXEC :n1 := 100;
SELECT :n1 FROM dual;
 
       :N1
----------
       100
 
-- 조건절 사용
VAR deptno NUMBER;
EXEC :deptno := 10;
 
SELECT empno, ename, deptno
FROM emp
WHERE deptno = :deptno;
 
     EMPNO ENAME          DEPTNO
---------- ---------- ----------
      7839 KING               10
      7782 CLARK              10
      7934 MILLER             10
 
-- 커서 사용
VAR rc REFCURSOR;
 
BEGIN
    OPEN :rc FOR
        SELECT empno, ename
        FROM emp
        WHERE deptno = 20;
END;
/
PRINT rc
 
     EMPNO ENAME
---------- ----------
      7566 JONES
      7788 SCOTT
      7902 FORD
      7369 SMITH
      7876 ADAMS
 

 

 

참조 : 

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpqr/#SQL*Plus%C2%AE

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/using-scripts-in-SQL-Plus.html#GUID-B52D6F2E-A28A-48B6-B73F-6A9D018BD107