안녕하세요. PL SQL 관련한 질문입니다.
MS SQL 만 쓰다 oracle 을 사용하려니 어렵네요.
많은 도움을 부탁 드려요..
아래의 PL SQL 문을 이용하여 결과를 출력하려고 하는데요...
아래의 문을 시작하면 에러가 뜨는데요...
MS SQL에서는 선언된 변수들을 SELECT 를 이용하여 쿼리 결과를 출력할 수 있는데요. 아래처럼
SELECT @CNT_JAEJEAK, @CNT_JAESUK;
오라클에서 위와 같이 변수에 저장된 값들을 SELECT 를 이용해서 출력할 수 없을까요?
아래 처럼 말이죠...
CNT_CHULSUK | CNT_GYEOLSUK | CNT_CHUNGGA | CNT_CHULJANG | CNT_GYEOLSUK2 | CNT_JAEJEAK | CNT_JAESUK |
299 | 171 | 126 | 0 | 0 | 0 | 1 |
--------------------------------------------------
DECLARE
CNT_JAEJEAK NUMBER(22);
CNT_CHULSUK NUMBER(22);
CNT_GYEOLSUK NUMBER(22);
CNT_CHUNGGA NUMBER(22);
CNT_CHULJANG NUMBER(22);
CNT_GYEOLSUK2 NUMBER(22);
CNT_JAESUK NUMBER(22);
BEGIN
select 0
INTO CNT_JAEJEAK
from aaa
;
select 1
INTO CNT_JAESUK
from bbbb
;
select COUNT(DECODE(ATTEND_KIND,'1',1)) AS CNT_CHULSUK
, COUNT(DECODE(ATTEND_KIND,'0',1)) AS CNT_GYEOLSUK
, COUNT(DECODE(ATTEND_KIND,'2',1)) AS CNT_CHUNGGA
, COUNT(DECODE(ATTEND_KIND,'3',1)) AS CNT_CHULJANG
, COUNT(DECODE(ATTEND_KIND,'4',1)) AS CNT_GYEOLSUK2
, CNT_JAEJEAK AS CNT_JAEJEAK -- 선언된 변수값을 출력
, CNT_JAESUK AS CNT_JAESUK -- 선언된 변수값을 출력
INTO CNT_CHULSUK
, CNT_GYEOLSUK
, CNT_CHUNGGA
, CNT_CHULJANG
, CNT_GYEOLSUK2
, CNT_JAEJEAK
, CNT_JAESUK
from AP_CURRENT_MGR CM INNER JOIN AP_ATTENDANCE AT
ON CM.Session_Cd = AT.Session_Cd
AND CM.Currents_CD = AT.Currents_CD
AND CM.Currents_Kind = AT.Currents_Kind
;
----어떻게 결과를 한출로 출력 할 수 있는가?
---
END;
/
---------------------------------------------------------------------------------
위의 문장을 실행하면 아래의 에러가 뜨는데요.
이유를 모르겠네요.
invalid SQL statement
Cause: The statement is not recognized as a valid SQL statement. This error can occur if the Procedural Option is not installed and a SQL statement is issued that requires this option (for example, a CREATE PROCEDURE statement). You can determine if the Procedural Option is installed by starting SQL*Plus. If the PL/SQL banner is not displayed, then the option is not installed.
Action: Correct the syntax or install the Procedural Option.