[PHP-users 24000] PHP→ORACLEへの配列受渡

八木 智弘 Yagi.Tomohiro @ toshiba-sol.co.jp
2004年 12月 27日 (月) 18:42:47 JST


いつも利用させて頂いております。八木と申します。

現在、あるプロジェクトで
「画面からEXCELをアップロードし
 取得したデータをORACLEにINSERTする
 処理」を作成しております。

EXCELからデータを取得する部分は
Spreadsheet_excel_readerといった
ライブラリを使用し、できたのですが
取得した配列データをORACLEに
渡せません。

「SQLの発行は1回にしたい。」
という要望があり、
配列を直接ORACLEに渡したいのですが
どうもうまくいきません。

なにかよい知恵がありましたら、
教えていただけないでしょうか。


・環境
 Solaris 5.8
 Oracle   8.1.7
  PHP      4.3.3

・データ(test.xls)
1	八木
2	智弘
3	TEST

PL/SQL:

TYPE v_array is TABLE OF varchar2(8000) INDEX BY BINARY_INTEGER;
CREATE OR REPLACE procedure proc_place
    (P_ID            in out v_array,
     P_NAME          in out v_array)
is
begin
    for i in 1..P_ID.count loop
        DBMS_OUTPUT.PUT_LINE(P_ID(i));
        DBMS_OUTPUT.PUT_LINE(P_NAME(i));
    END LOOP;
end;

PHP:
 <?php

    //oracleログイン(excelaryにデータは格納)
    for($i=0;$i<=$row-1;$i++){
       $WK_ID[$i+1]   =$excelary[$i][1];
       $WK_NAME[$i+1] =$excelary[$i][2];
    }
    $conn1=ora_logon(ユーザ@SID,パスワード);
    $sql="BEGIN proc_place(:WK_ID,:WK_NAME);END;";    
    $cur1= ora_open($conn1);
    $ret1= ora_parse($cur1,$sql);
    ora_bind($cur1,"WK_ID",":WK_ID",1000);
    ora_bind($cur1,"WK_NAME",":WK_NAME",1000);
    ora_exec($cur1);
    
    //oracleログアウト    
    Ora_Close($cur1);
    Ora_Logoff($conn1);
    
?>

八木 智弘

----
八木 智弘  Yagi.Tomohiro @ toshiba-sol.co.jp
*--------------------------------------------*
株式会社システムエグゼ 
SI推進部  八木  智弘

◆◆住所と電話番号が変わりました◆◆
〒104-0033 東京都中央区新川2-3-1 
           セントラルスクエア2F
TEL:03-5542-5591 FAX:03-5542-5594

 *--------------------------------------------*

----
八木 智弘  Yagi.Tomohiro @ toshiba-sol.co.jp
*--------------------------------------------*
株式会社システムエグゼ 
SI推進部  八木  智弘

◆◆住所と電話番号が変わりました◆◆
〒104-0033 東京都中央区新川2-3-1 
           セントラルスクエア2F
TEL:03-5542-5591 FAX:03-5542-5594

 *--------------------------------------------*

----
八木 智弘  Yagi.Tomohiro @ toshiba-sol.co.jp
*--------------------------------------------*
株式会社システムエグゼ 
SI推進部  八木  智弘

◆◆住所と電話番号が変わりました◆◆
〒104-0033 東京都中央区新川2-3-1 
           セントラルスクエア2F
TEL:03-5542-5591 FAX:03-5542-5594

 *--------------------------------------------*


PHP-users メーリングリストの案内