[PHP-users 24001] Re: PHP→ORACLEへの配列受渡
Naomasa Numajiri
naonuma @ ubiquitous.co.jp
2004年 12月 27日 (月) 18:56:27 JST
こんにちは
(質問そのものは分かりませんが)
; 「SQLの発行は1回にしたい。」
; という要望があり、
; 配列を直接ORACLEに渡したいのですが
; どうもうまくいきません。
配列の要素毎にデータを渡す場合は、OCIExecute()を要素毎に
実行する必要はありますが、OCIPrepare()やOCIBindByName()は
そのような場合でも1回で済むと思いますよ。
一番重いのはOCIPrepare()で発生するSQL文の解析コストだと
思うので、それが「1回にしたい」理由なら気にしなくてもいいのでは?
# ちなみに、使っている関数はOracle7互換の関数のようですね。
# 使ったことはありませんが同じだと思います。
ちなみに、
; ora_bind($cur1,"WK_ID",":WK_ID",1000);
; ora_bind($cur1,"WK_NAME",":WK_NAME",1000);
ora_bind()の使い方はこれで間違いないですか?
参考になれば
-- ぬ
On Mon, 27 Dec 2004 18:42:47 +0900
Yagi.Tomohiro @ toshiba-sol.co.jp (八木 智弘) wrote:
; いつも利用させて頂いております。八木と申します。
;
; 現在、あるプロジェクトで
; 「画面から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 mailing list PHP-users @ php.gr.jp
; http://ns1.php.gr.jp/mailman/listinfo/php-users
; PHP初心者のためのページ - 質問する前にはこちらをお読みください
; http://www.php.gr.jp/php/novice.php3
PHP-users メーリングリストの案内