0

ociを使用してOracleに配列を渡すための文字列を作成しようとしています。文字列を書くとうまくいきますが、変数として渡すとエラーになります。

これはうまくいきます:

$c = oci_pconnect ( $config ['db'] ['username'], $config ['db'] ['password'], $config ['db'] ['hostspec'] );


        try {
$llamado = "DECLARE V_DNA_ARRAY M6_TEMP_DNA_TAB_TYPE:=M6_TEMP_DNA_TAB_TYPE();BEGIN V_DNA_ARRAY.extend(3); V_DNA_ARRAY(1) := O_M6_TEMP_DNA('91','92','93','94','95'); V_DNA_ARRAY(2) := O_M6_TEMP_DNA('96','97','98','99','910'); V_DNA_ARRAY(3) := O_M6_TEMP_DNA('911','912','913','914','915'); SINTRA.PKG_MEDULA.P_INSERT_TEMP_DNA ( V_DNA_ARRAY );END;";
            $s = oci_parse ( $c, $llamado );
            $r = oci_execute ( $s);


        } catch ( Exception $e ) {
            var_dump ( $r );
            var_dump ( $e->$d->getMessage () );
            die ( 'STOP' );
        }

しかし、これを行うと(値が変更されるため)、次のようになります。

警告: oci_parse() は、パラメーター 1 がリソースであると想定します。153 行目の C:\xampp\htdocs\cph_donante\inside\action\gsilva\insert.php で指定された整数です。

警告: oci_execute() は、パラメーター 1 がリソースであると想定します。154 行目の C:\xampp\htdocs\cph_donante\inside\action\gsilva\insert.php で指定された null です。

 $c = oci_pconnect ( $config ['db'] ['username'], $config ['db'] ['password'], $config ['db'] ['hostspec'] );


        try {

        $llamado = '"DECLARE V_DNA_ARRAY M6_TEMP_DNA_TAB_TYPE:=M6_TEMP_DNA_TAB_TYPE();BEGIN ';
$llamado .= 'V_DNA_ARRAY.extend('.count($c1).'); ';
foreach ($c1 as $c => $v){
$llamado .= 'V_DNA_ARRAY('.($c + 1).') := O_M6_TEMP_DNA('.$v.'); ';
}
$llamado .= 'SINTRA.PKG_MEDULA.P_INSERT_TEMP_DNA ( V_DNA_ARRAY );END;"';


            $s = oci_parse ( $c, $llamado );
            $r = oci_execute ( $s );


        } catch ( Exception $e ) {
            var_dump ( $r );
            var_dump ( $e->$d->getMessage () );
            die ( 'STOP' );
        }

それがどのように機能するか教えてもらえますか?

4

1 に答える 1

0

一見すると、ステートメントの等号の反対側にコロンがあるように見えます。

oci_parse の php ドキュメントへのリンクは次のとおりです: oci_parse

また、実行前にステートメントに変数をバインドする oci_bind 関数を確認することもできます。

それがどのように機能するかを知りたいというあなたの質問への答えとして、私の最良の答えはドキュメントを読むことです. PHP ドキュメントはかなりよく書かれており (imo)、実装例もあります。私はそれがどのように機能するかを探します。

于 2013-08-20T15:55:33.440 に答える