안녕하세요.
정확한 syntax는 책을 보고 수정하시기 바랍니다.
대충 흐름은 다음과 같습니다.
create procedure test(StdDate Date, EndDate Date, StdValue1 int, EndValue1 int)
returning date, float, float, float;
define rday date;
define rmax float;
define rmin float;
define ravg float;
FOR EACH SELECT A.DAY, MAX(A.INDEX_VALUE/B.INDEX_VALUE)*100,
MIN(A.INDEX_VALUE/B.INDEX_VALUE)*100,
AVG(A.INDEX_VALUE/B.INDEX_VALUE)*100
INTO rday, rmax, rmin, ravg
FROM EXT_FUND_ALLOC A, EXT_FUND_ALLOC B, VIEW_EXT_FUND C
WHERE A.FUND_ID = B.FUND_ID AND B.DAY = StdDate AND
A.DAY >= StdDate AND
A.DAY <= EndDate AND A.FUND_ID = C.FUND_ID AND
C.IS_MUTUAL= 0 AND C.IS_PUBLIC= 1 AND
C.FUND_INVEST_TYPE= 1 AND C.FUND_EVAL_TYPE= 1 AND
C.IS_OPEN= 1 AND C.FUND_ALLOC_TYPE= 3 AND
B.ACCOUNT_AMT >= StdValue1 AND B.ACCOUNT_AMT < EndValue1
GROUP BY A.DAY
ORDER BY A.DAY
RETURN rday, rmax, rmin, ravg WITH RESUME;
END FOREACH;
end procedure;
execute procedure test(TODAY - 1 UNITS DAY, TODAY, 1, 5);
그럼 도움이 되었길...
>>부탁 님께서 쓰시길<<
:: 이제 막 인포믹스를 접하게 되어 모르는게 넘 많군요.
::
:: VB에서 ADO2.1을 사용하여 쿼리문을 날리면 에러가 뜨네요.
:: 80040e21 이라고... MS에서 찾아보니 적절한 해결책이 없어 내장 프로시져로 작성
:: 하려 합니다.
::
:: 혹시 프로시져 리턴값을 SELECT한 테이블을 넘겨줄 수 는 없는지요..
:: 아래는 쿼리문입니다.
::
:: SELECT A.DAY, MAX(A.INDEX_VALUE/B.INDEX_VALUE)*100,
:: MIN(A.INDEX_VALUE/B.INDEX_VALUE)*100,
:: AVG(A.INDEX_VALUE/B.INDEX_VALUE)*100
:: FROM EXT_FUND_ALLOC A, EXT_FUND_ALLOC B, VIEW_EXT_FUND C
:: WHERE A.FUND_ID = B.FUND_ID AND B.DAY = StdDate AND
:: A.DAY >= StdDate AND
:: A.DAY <= EndDate AND A.FUND_ID = C.FUND_ID AND
:: C.IS_MUTUAL= 0 AND C.IS_PUBLIC= 1 AND
:: C.FUND_INVEST_TYPE= 1 AND C.FUND_EVAL_TYPE= 1 AND
:: C.IS_OPEN= 1 AND C.FUND_ALLOC_TYPE= 3 AND
:: B.ACCOUNT_AMT >= StdValue1 AND B.ACCOUNT_AMT < EndValue1
:: GROUP BY A.DAY
:: ORDER BY A.DAY
::
|