PostgreSQL/PREPAREでPreparedStatementsを作成する
の編集
Top
/
PostgreSQL
/
PREPAREでPreparedStatementsを作成する
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
PostgreSQL/template0とtemplate1の違いについて
#navi(../) * PostgreSQLのPREPAREでPreparedStatementsを作成する方法 [#g62acd27] JavaのPreparedStatementや、PHPの$dbh->prepare(...)などと同じような動作をPostgreSQLを使用してSQL文で実現する方法を以下に記します。~ #contents #htmlinsertpcsp(db-top.html,db-sp.html) * 関連記事 [#b75ddd60] -[[MySQLのPREPAREでPreparedStatementsを作成する方法>MySQL/PREPAREでPreparedStatementsを作成する]] -[[MySQLでPREPAREしたクエリーを削除する方法・DEALLOCATE>MySQL/PREPAREしたクエリーを削除する方法・DEALLOCATE]] -[[PostgreSQLでPREPAREしたクエリーを削除する方法・DEALLOCATE>PostgreSQL/PREPAREしたクエリーを削除する方法・DEALLOCATE]] * 動作確認環境 [#yf32efa4] 以下の環境で動作確認を行いました。 - OS~ CentOS6 x86_64 - PostgreSQL~ PostgreSQL 8.4.13 * PREPAREを使ってみる [#s8bfdb3d] PREPAREを使うとSQLの一時的な関数(のようなもの)を作成することができます。~ 以下にいくつかのPREPARE使用例を記します。~ 尚、このPREPAREで指定した設定内容は接続が切れると無くなります。 ** select now(); を PREPARE [#rd597821] psqlで接続し以下のように入力します。~ select now();をshow_nowという名前で登録します。~ execute show_now;でPREPAREで指定したSQLが実行されているのが確認できます。 sakura=# PREPARE show_now as sakura-# select now(); PREPARE sakura=# EXECUTE show_now; now ------------------------------ 2013-01-23 21:23:58.49768+09 (1 行) 上記で操作したSQLを添付しておきます。 #ref(prepare01.sql) 以下のようにすれば端末から実行できます。 psql < prepare01.sql 実行結果 $ psql < prepare01.sql PREPARE now ------------------------------- 2013-01-23 21:28:05.100399+09 (1 行) ** PREPAREで引数を指定する方法 [#eba31a54] JavaやPHPのPreparedStatementを使う場合、?を使いますよね。~ 以下、PREPAREで引数を指定する方法を記します。 + テーブルの作成 sakura=# CREATE TABLE foo (a int, b text); CREATE TABLE + データのインサート sakura=# INSERT INTO foo VALUES(1,'sakura'); INSERT 0 1 + データの確認 sakura=# SELECT * FROM foo; a | b ---+-------- 1 | sakura (1 行) + PREPAREでINS_SQLを定義 sakura=# PREPARE INS_SQL (integer, varchar) AS sakura-# INSERT INTO foo VALUES($1, $2); PREPARE + PREPAREでUPD_SQLを定義 sakura=# PREPARE UPD_SQL (integer, varchar) AS sakura-# UPDATE foo SET b=$2 WHERE a=$1; PREPARE + EXECUTEを使ってINS_SQLを実行 sakura=# EXECUTE INS_SQL(2,'tsubaki'); INSERT 0 1 sakura=# EXECUTE INS_SQL(3,'suzuran'); INSERT 0 1 + 上記で実行したINS_SQLでデータがインサートされているかを確認 sakura=# SELECT * FROM foo; a | b ---+--------- 1 | sakura 2 | tsubaki 3 | suzuran (3 行) + EXECUTEを使ってUPD_SQLを実行 sakura=# EXECUTE UPD_SQL(1,'さくら'); UPDATE 1 sakura=# EXECUTE UPD_SQL(2,'つばき'); UPDATE 1 sakura=# EXECUTE UPD_SQL(3,'すずらん'); UPDATE 1 + 上記で実行したUPD_SQLでデータがインサートされているかを確認 sakura=# SELECT * FROM foo; a | b ---+---------- 1 | さくら 2 | つばき 3 | すずらん (3 行) 上記で操作したSQLを添付しておきます。 #ref(prepare02.sql) 以下のようにすれば端末から実行できます。 psql < prepare02.sql 実行結果 $ psql < prepare02.sql DROP TABLE CREATE TABLE INSERT 0 1 a | b ---+-------- 1 | sakura (1 行) PREPARE PREPARE INSERT 0 1 INSERT 0 1 a | b ---+--------- 1 | sakura 2 | tsubaki 3 | suzuran (3 行) UPDATE 1 UPDATE 1 UPDATE 1 a | b ---+---------- 1 | さくら 2 | つばき 3 | すずらん (3 行) #htmlinsertpcsp(db-btm.html,db-sp.html)
タイムスタンプを変更しない
#navi(../) * PostgreSQLのPREPAREでPreparedStatementsを作成する方法 [#g62acd27] JavaのPreparedStatementや、PHPの$dbh->prepare(...)などと同じような動作をPostgreSQLを使用してSQL文で実現する方法を以下に記します。~ #contents #htmlinsertpcsp(db-top.html,db-sp.html) * 関連記事 [#b75ddd60] -[[MySQLのPREPAREでPreparedStatementsを作成する方法>MySQL/PREPAREでPreparedStatementsを作成する]] -[[MySQLでPREPAREしたクエリーを削除する方法・DEALLOCATE>MySQL/PREPAREしたクエリーを削除する方法・DEALLOCATE]] -[[PostgreSQLでPREPAREしたクエリーを削除する方法・DEALLOCATE>PostgreSQL/PREPAREしたクエリーを削除する方法・DEALLOCATE]] * 動作確認環境 [#yf32efa4] 以下の環境で動作確認を行いました。 - OS~ CentOS6 x86_64 - PostgreSQL~ PostgreSQL 8.4.13 * PREPAREを使ってみる [#s8bfdb3d] PREPAREを使うとSQLの一時的な関数(のようなもの)を作成することができます。~ 以下にいくつかのPREPARE使用例を記します。~ 尚、このPREPAREで指定した設定内容は接続が切れると無くなります。 ** select now(); を PREPARE [#rd597821] psqlで接続し以下のように入力します。~ select now();をshow_nowという名前で登録します。~ execute show_now;でPREPAREで指定したSQLが実行されているのが確認できます。 sakura=# PREPARE show_now as sakura-# select now(); PREPARE sakura=# EXECUTE show_now; now ------------------------------ 2013-01-23 21:23:58.49768+09 (1 行) 上記で操作したSQLを添付しておきます。 #ref(prepare01.sql) 以下のようにすれば端末から実行できます。 psql < prepare01.sql 実行結果 $ psql < prepare01.sql PREPARE now ------------------------------- 2013-01-23 21:28:05.100399+09 (1 行) ** PREPAREで引数を指定する方法 [#eba31a54] JavaやPHPのPreparedStatementを使う場合、?を使いますよね。~ 以下、PREPAREで引数を指定する方法を記します。 + テーブルの作成 sakura=# CREATE TABLE foo (a int, b text); CREATE TABLE + データのインサート sakura=# INSERT INTO foo VALUES(1,'sakura'); INSERT 0 1 + データの確認 sakura=# SELECT * FROM foo; a | b ---+-------- 1 | sakura (1 行) + PREPAREでINS_SQLを定義 sakura=# PREPARE INS_SQL (integer, varchar) AS sakura-# INSERT INTO foo VALUES($1, $2); PREPARE + PREPAREでUPD_SQLを定義 sakura=# PREPARE UPD_SQL (integer, varchar) AS sakura-# UPDATE foo SET b=$2 WHERE a=$1; PREPARE + EXECUTEを使ってINS_SQLを実行 sakura=# EXECUTE INS_SQL(2,'tsubaki'); INSERT 0 1 sakura=# EXECUTE INS_SQL(3,'suzuran'); INSERT 0 1 + 上記で実行したINS_SQLでデータがインサートされているかを確認 sakura=# SELECT * FROM foo; a | b ---+--------- 1 | sakura 2 | tsubaki 3 | suzuran (3 行) + EXECUTEを使ってUPD_SQLを実行 sakura=# EXECUTE UPD_SQL(1,'さくら'); UPDATE 1 sakura=# EXECUTE UPD_SQL(2,'つばき'); UPDATE 1 sakura=# EXECUTE UPD_SQL(3,'すずらん'); UPDATE 1 + 上記で実行したUPD_SQLでデータがインサートされているかを確認 sakura=# SELECT * FROM foo; a | b ---+---------- 1 | さくら 2 | つばき 3 | すずらん (3 行) 上記で操作したSQLを添付しておきます。 #ref(prepare02.sql) 以下のようにすれば端末から実行できます。 psql < prepare02.sql 実行結果 $ psql < prepare02.sql DROP TABLE CREATE TABLE INSERT 0 1 a | b ---+-------- 1 | sakura (1 行) PREPARE PREPARE INSERT 0 1 INSERT 0 1 a | b ---+--------- 1 | sakura 2 | tsubaki 3 | suzuran (3 行) UPDATE 1 UPDATE 1 UPDATE 1 a | b ---+---------- 1 | さくら 2 | つばき 3 | すずらん (3 行) #htmlinsertpcsp(db-btm.html,db-sp.html)
テキスト整形のルールを表示する
添付ファイル:
prepare01.sql
567件
[
詳細
]
prepare02.sql
247件
[
詳細
]