초보자가 하루 반나절동안 낑낑대다가 고수님들께 구원의 손길을 내밈니다.
너무 시간을 지체할 수 엄써서 올리는 글이오니 많은 조언 부탁 드리오며, 오늘의 질문은...(꼭 약장수 말투 같군여...--;)
저는 Oracle 7.3과 델파이 4.0을 쓰고 있습니다.
데이타의 양이 많은 select는 프로시저를 쓰는게 훨 빠르고 좋다는 말에 솔깃해서리 프로시저를 한번 만들어 볼려구 했습니다.
파워빌더에서 처럼 프로시져를 Datawindow에 붙이기만하믄 좌~악 멀티라인이 옮겨올거란 생각을 했지만, 그렇지 않다더군여... (첫번째 좌절..)
그래서 패키지않에 프로시져를 선언하구 리턴은 rowtype으로 받아보란 말에 열씨미 책보구 만들어 봤는데 결국 안되더군여... (두번째 좌절..)
sql explorer에서 패키지 선언하는데는 그나마 되는데 패키지 바디는 구문 중간에 짤려서 저장이 되더군여.(T.T..) 이 일을 어찌하오리까.
도와주소서...
년도 두개와 부서코드를 입력받아서 멀티라인을 select하는 패키지를 만들려구 만든 문장입니다.
어디가 잘못된걸까여..
혹 패키지 말고도 딴 방법이 있음 꼬~옥 갈쳐주시구여..
CREATE OR REPLACE PACKAGE pk_103 AS
TYPE bdgtRecTyp IS RECORD (accd String, depcd, sum_bdgt Number, sum_amt number);
CURSOR accd_bdgt ( yr1 String, yr2 String, depcd String) RETURN bdgtRecTyp
END 103;
CREATE OR REPLACE 0PACKAGE BODY pk_cbg103 AS
CURSOR accd_bdgt ( yr1 char, yr2 char, depcd char) RETURN bdgtRecTyp IS
select a.accd, a.ksnm, nvl(b.sum_bdgt,0), nvl(b.sum_amt,0), nvl(c.sum_bdgt,0), nvl(c.sum_amt,0)
from ff103 a,
(select sum(accd) accd, sum(depcd) depcd, sum(budget + drtbudget) sum_bdgt, sum(amt + drtamt) sum_amt
From fb103
where bdgtyr = :yr1
and depcd like :depcd||'%') b,
(select sum(accd) accd, sum(depcd) depcd, sum(budget + drtbudget) sum_bdgt, sum(amt + drtamt) sum_amt
From fb103
where bdgtyr = :yr2
and depcd like :depcd||'%') c
where a.accd = b.accd(+)
and a.accd = c.accd(+)
and a.kwgb2 = '1'
order by a.accd;
END pk_103;
그럼 고수님들의 아낌없는 조언을 목빼고 기다리겠슴다.