일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ssh
- web.xml
- 단축키
- lsof
- VirtualBox
- 줄바꿈 문자
- netsh
- xargs
- vscode
- bash
- Windows 10
- Quartz
- GIT
- find
- maVen
- Source
- port
- 네트워크
- JavaScript
- IntelliJ
- tomcat
- Eclipse
- import
- Windows
- grep
- Mac
- resource
- profile
- plugin
- context
- Today
- Total
develog
Dynamic Cursor 본문
DECLARE
V_SQL VARCHAR2(512);
V_CURSOR NUMBER;
V_EXECUTED NUMBER;
V_COL1 TB_TEMP.COL1%TYPE;
V_COL2 TB_TEMP.COL2%TYPE;
V_COL3 TB_TEMP.COL3%TYPE;
BEGIN
V_SQL := '
SELECT COL1, COL2, COL3
FROM TB_TEMP
WHERE COL4 = :1
AND COL5 = :2
';
--1. 커서 오픈
V_CURSOR := DBMS_SQL.OPEN_CURSOR;
--2. SQL 파싱
DBMS_SQL.PARSE(V_CURSOR, V_SQL, DBMS_SQL.NATIVE);
--3. 변수 바인딩
DBMS_SQL.BIND_VARIABLE(V_CURSOR, '1', 'AAA');
DBMS_SQL.BIND_VARIABLE(V_CURSOR, '2', 'BBB');
--4. 컬럼 정의
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 1, V_COL1, 10);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 2, V_COL2, 5);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR, 3, V_COL3);
--5. 커서 실행
V_EXECUTED := DBMS_SQL.EXECUTE(V_CURSOR);
--6. 로우 패치
WHILE DBMS_SQL.FETCH_ROWS(V_CURSOR) > 0
LOOP
DBMS_SQL.COLUMN_VALUE(V_CURSOR, 1, V_COL1);
DBMS_SQL.COLUMN_VALUE(V_CURSOR, 2, V_COL2);
DBMS_SQL.COLUMN_VALUE(V_CURSOR, 3, V_COL3);
DBMS_OUTPUT.PUT_LINE(V_COL1 || ', ' || V_COL2 || ', ' || V_COL3);
END LOOP;
--7. 커서 닫기
IF DBMS_SQL.IS_OPEN(V_CURSOR)
THEN
DBMS_SQL.CLOSE_CURSOR(V_CURSOR);
END IF;
DBMS_OUTPUT.PUT_LINE('DONE!');
END;
'DB > PLSQL' 카테고리의 다른 글
PLSQL split (0) | 2014.03.14 |
---|---|
PLSQL 2차원 배열 (0) | 2013.12.12 |
plsql random (0) | 2013.05.30 |
기본 구조 (0) | 2012.04.17 |