0

선택 사항이므로 Declare 문을 건너 뜁니다. 컴파일러 로그 오류가 발생했습니다.두 테이블을 비교하는 변수없이 Proc를 만드는 방법 SQL Developer에서?

CREATE PROCEDURE abc 
Begin 
WITH xT1 AS 
(SELECT Table1.* 
FROM Table1 
WHERE status_CD ='M') 
SELECT 
     CASE WHEN Table2.status_cd IS NULL 
       THEN 'New' 
       ELSE 'Old' 
     END AS COMPX 
     , xT1.* 
FROM Table1 
LEFT OUTER JOIN table2 
      ON xT1.t1_ID = table2.t2_ID 
; 
end; 
+0

무엇이 오류입니까? 쿼리 결과로 무엇을하고 싶습니까? 저장 프로 시저는 단순히 'select' 문일 수 없습니다. 당신은 하나 이상의 스칼라 변수를'select into '할 수 있습니다. 하나 이상의 콜렉션에'대량 수집'을 할 수 있습니다.'sys_refcursor' 인'out' 매개 변수를 선언하고 호출자에게 커서를 반환 할 수 있습니다 (그런 다음 커서로 데이터를 가져 와서 데이터를 가져 오는 방법을 알아야합니다.) –

답변

0

FROM 절에 언급 된 XT1 테이블이 없습니다. select 문에서 table1을 XT1로 바꿉니다. 아래
AS 수정 된 쿼리

XT1 함께

입니다 CASE을 선택 (없음 = 1 테스트 표 * FROM 를 선택) 언제 Table2.sal은 NULL입니다 THEN '새' ELSE '올드' END AS COMPX , xT1. * FROM xT1 LEFT OUTER JOIN 테스트 테이블 2 ON xT1.no = table2.no ;