[pgsql-jp: 31609] Re: Oracleとの更新処理の違い
岡部太一
okabe @ nsd.jip.co.jp
2003年 11月 26日 (水) 18:56:13 JST
岡部です。
# ちゃんと名乗っていませんでしたが、
# 最近参加させて頂きました。
# よろしくお願いします。
>高田です。
>
>確かにマニュアルにPREPAREというコマンドがありました。
>が、PHPから発行する方法がわからない、またバインド変数
>の宣言の仕方も書いてないみたいでした。
私もやったことが無いので、推測ですが、
「SQLコマンド」ということは
クエリとして発行するSQL文ということと思います。
つまり、
pg_query($conn,"PREPARE plan_name (datatype, ... ) AS query");
そして、
for (...){
pg_query($conn,"EXECUTE plan_name (parameter, ... )");
}
>普通にPostgreSQLでコーディングする場合は、
>
>for ($j=1;$j<=20;$j++){
> pg_query($conn,"
> insert into DB_TABLE (ID,FIELD_ID,NAME,TYPE,SIZE)
> values ($j,$FieldName[$j],$FieldType[$j],$FieldName[$j]")
>}
>
>(適当に書いたので書き損じがあったらすみません)
>のようにするのですか?
はい。(構文までは確認してませんが、方法として。)
これだと単行挿入用の"異なる"SQL文を繰り返し発行することになる、
というのが、Oracleの場合にはバインド変数を用いる理由ですよね。
Oracleのバインド変数を用いる方法も、
PostgreSQLのプリペアードクエリを用いる方法も、
SQL文のパースと実行を明示的に分けて、
実行だけを繰り返すことができるという点が肝だと思います。
pgsql-jp メーリングリストの案内