[pgsql-jp: 31602] Oracleとの更新処理の違い

takada @ lifedesign.co.jp takada @ lifedesign.co.jp
2003年 11月 26日 (水) 16:21:01 JST


高田と申します。よろしくお願いします。

Windows2k+Apache1.3+PHP4.3+Oracle9iの環境から、
RedhatLinux+Apache1.3+PHP4.3+PostgreSQL7.4
への移行をしようと試みています。
とりあえず従来あるWebアプリを移行しながら練習をし
かけているのですが、早速更新処理で詰まってしまいま
した。

単一行の挿入、更新、削除は別に問題ないのです
が、一気に複数行の処理を行うとき、Oracleですと、
最初にSQL文をPerseして、バインド変数を宣言、
後はループの中で変数を入れ替えながらExcuteして
いけばよかったのですが、PostgreSQLでこのような
場合のやり方がわかりません。

基本的にはSQL文は最初に書いて変数の中に入れて
置いて、実行時にはSQL文は変数で参照するように
コーディングしたいのですが、PosrgreSQLの場合は、
実行時にSQL文を書かないとしょうがないのでしょう
か。

具体的にはOracleでは

$registSql=<<<SQL
  insert into DB_TABLE
	(ID,FIELD_ID,NAME,TYPE,SIZE)
   values
	(:ID,:fieldID,:field_1,:field_2,:field_3)
SQL;
$stmt = OCIParse($conn,$registSql); 
OCIBindByName($stmt,":ID",&$ID,10);
OCIBindByName($stmt,":fieldID",&$FIELD_ID,10);
OCIBindByName($stmt,":field_1",&$FIELD_1,10);
OCIBindByName($stmt,":field_2",&$FIELD_2,10);
OCIBindByName($stmt,":field_3",&$FIELD_3,10);
for ($j=1;$j<=20;$j++){
  $FIELD_ID=$j;
  $FIELD_1=$FieldName[$j];
  $FIELD_2=$FieldType[$j];
  $FIELD_3=$FieldSize[$j];
  OCIExecute($stmt,OCI_DEFAULT);
}

散々探したつもりですが、どうしても見つけ
られませんでした。よろしくお願いいたしま
す。



pgsql-jp メーリングリストの案内