PostgreSQL/PREPAREでPreparedStatementsを作成する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* PostgreSQLのPREPAREでPreparedStatementsを作成する方法 [...
JavaのPreparedStatementや、PHPの$dbh->prepare(...)などと...
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* 関連記事 [#b75ddd60]
-[[MySQLのPREPAREでPreparedStatementsを作成する方法>MySQL...
-[[MySQLでPREPAREしたクエリーを削除する方法・DEALLOCATE>M...
-[[PostgreSQLでPREPAREしたクエリーを削除する方法・DEALLOC...
* 動作確認環境 [#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を作成する方法 [...
JavaのPreparedStatementや、PHPの$dbh->prepare(...)などと...
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* 関連記事 [#b75ddd60]
-[[MySQLのPREPAREでPreparedStatementsを作成する方法>MySQL...
-[[MySQLでPREPAREしたクエリーを削除する方法・DEALLOCATE>M...
-[[PostgreSQLでPREPAREしたクエリーを削除する方法・DEALLOC...
* 動作確認環境 [#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)
ページ名: