CI 묻고 답하기

제목 이 내용과 같이 오라클 프로시져 사용하는 방법을 알려주세요
글쓴이 왕기장군 작성시각 2015/03/10 12:57:10
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 19407   RSS

아래 실제 사용하는 프로시져를 통으로 가져왔습니다.

제가 헷갈리는 건.. 
이 것을 php (CI) 에서 불러와서 결과를 출력하는 것 인데..
일단 여기저기 검색해서 해본 방법으로는 계속 에러만 나고 있습니다. 

아무래도 개념을 잘못 잡은것 같은데요..

ㅇㅏ래 프로시져를 CI 의 PHP 구문으로 호출하고 출력하는 방법만 알려주시면..
나머지 디테일은 검색해서 맞춰보겠습니다.

SYS_REFCURSOR 쪽에서 문제가 생기는것 같은데..

이런식으로는 해 봤는데 잘 안되더군요.. 

$sql = "CALL PRC_ZLOGI_PURCHS(MRESULT, 'O', '14S', 'QATSX1411', '2014-01-03', '1');";
$this->db->query($sql);
$result = $this->db->query("select MRESULT as return_value");
$returns = $result->result_array(); 


부탁드립니다. 

----------------- 프로시저 오라클쪽 샘플 ------------------------------

CREATE OR REPLACE PROCEDURE FNF.PRC_ZLOGI_PURCHS

(

MENULIST     OUT      SYS_REFCURSOR,

V_BRAND    IN      VARCHAR,

V_SEASON   IN      VARCHAR,

V_PONUM    IN      VARCHAR,

V_DUEDATE  IN      VARCHAR,

V_DEGREE   IN      VARCHAR

)

IS

BEGIN

  OPEN MENULIST FOR

    SELECT

             A.IBGOSCH_DATE     AS DUEDATE --입고예정일

            ,A.BRAND

            ,A.SEASON            --시즌 

            ,A.PONUM             --발주번호       

            ,A.CUST_CODE        AS VENDOR --업체코드  

            ,B. CUST_SHORT_NAME  AS VENDORNAME --업체명  

            ,F.DEGREE             -- 차수

            ,A.PARTCODE          --품번 

            ,A.COLOR             --칼라 

            ,A.SIZ               --사이즈

            ,SUM(A.QTY) AS QTY

       FROM ERP. SCM_IBGOSCHEDULE A,  

            ERP.SA0120_TB      B,  

            NERP.FS2501_TB     F  

      WHERE A.CUST_CODE = B .CUST_CODE 

        AND A. BRAND     = F .BRAND

        AND A. SEASON = DECODE ( F.SEASON , '9', 'NO',   F .YY || DECODE(F. SEASON,'1' ,'S', '2','S' ,'3', 'S','4' ,'F', '5','F' ,'6', 'F', F. SEASON))

        AND A. PONUM = F.STYLE_NO  

        AND A. BRAND        = V_BRAND          --조건(브랜드

        AND A. SEASON       = V_SEASON               --조건(시즌

        AND A. PONUM        = V_PONUM           --조건(발주번호

        AND A. IBGOSCH_DATE = V_DUEDATE --조건(입고예정일

        AND F.DEGREE        = V_DEGREE  --차수

     GROUP BY        

             A.IBGOSCH_DATE

            ,A.BRAND

            ,A.SEASON       

            ,A.PONUM              

            ,A.CUST_CODE     

            ,B. CUST_SHORT_NAME  

            ,F.DEGREE         

            ,A.PARTCODE    

            ,A.COLOR       

            ,A.SIZ           

    ORDER BY 

             A.IBGOSCH_DATE

            ,A.BRAND

            ,A.SEASON        

            ,A.PONUM               

            ,F.DEGREE          

            ,A.PARTCODE 

            ,A.COLOR    

            ,SUBSTR('   ' || A.siz,-3);    

 

/* 사용예

DECLARE

  MRESULT    SYS_REFCURSOR;

  DUEDATE     NVARCHAR2(10);

  BRAND         NVARCHAR2(2);

  SEASON       NVARCHAR2(4);

  PONUM         NVARCHAR2(18);

  VENDOR       NVARCHAR2(8);

  VENDORNAME       NVARCHAR2(60);

  DEGREE                NVARCHAR2(2);

  PARTCODE            NVARCHAR2(10);

  COLOR                  NVARCHAR2(3);

  SIZ                       NVARCHAR2(3);

   QTY                     NUMBER;

BEGIN

  PRC_ZLOGI_PURCHS(MRESULT, 'O', '14S', 'QATSX1411', '2014-01-03');

  LOOP

    FETCH MRESULT

    INTO DUEDATE, BRAND, SEASON, PONUM, VENDOR, VENDORNAME, DEGREE, PARTCODE, COLOR, SIZ, QTY;

    DBMS_OUTPUT.PUT_LINE(   DUEDATE || ' ' || BRAND || ' ' ||  SEASON || ' ' ||  PONUM || ' ' ||  VENDOR || ' ' ||  VENDORNAME || ' ' ||  DEGREE || ' ' ||  PARTCODE || ' ' ||  COLOR || ' ' ||  SIZ || ' ' ||  QTY );

    EXIT WHEN MRESULT%NOTFOUND;

  END LOOP;

  CLOSE MRESULT;

END;

 

*/           

              

END PRC_ZLOGI_PURCHS ;

/

 다음글 restful 값이 안넘어오네요.. (4)
 이전글 nginx를 사용해서 codeigniter 연동 질문 (3)

댓글

변종원(웅파) / 2015/03/10 14:57:19 / 추천 0
http://cikorea.net/qna/view/15512/page/1/q/프로시져  
mysql은 위 글과 같이 사용했구요.

오라클은 구글에서 검색하니 자료 많네요.
https://www.google.co.kr/search?q=codeigniter+oracle+procedure&gws_rd=cr&ei=a4f-VP7ULMbemAW_m4DQDQ