SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

PostgreSQL 編20 - VB ストアド呼び出し、トリガー、トランザクションロールバック

■VB ストアドファンクション呼び出し

  ・VB6 ADO - ODBC での PostgreSQL のストアドの呼び出しをテストする。
    testm には、トリガーも作成してあるので、同時にトリガーのテストもする。

drop function instest1();
create function instest1() returns int as
'
declare
  rcd int := -1;
begin
  insert into test2m values (''ins001'', ''aaa'');
  insert into test2m values (''ins002'', ''bbb'');
  insert into test2m values (''ins003'', ''ccc'');
  rcd := 0;
  return rcd;
end;
'
language 'plpgsql'
;

  ・VB6 ADO では、次のようにストアドを呼び出す。

  Dim cn as Variant
  Dim cd as Variant
  Dim p0 as Variant

'** ODBC 接続
  set cn = CreateObject ("ADODB.Connection")
  cn.Open "dsn=PostgreSQL;uid=sak;pwd=sak"
  cn.CursorLocation = 3

'** ストアドコマンド
  set cd = CreateObject ("ADODB.Command")
  cd.ActiveConnection = cn
  cd.commandtext = "instest1()"
  cd.commandtype = 4
  set p0 = cd.createParameter("rcd", 200, 4, 9)
  cd.Parameters.Append p0

'** トランザクション開始
  cn.BeginTrans

'** レコード処理
  cn.Execute "insert into testm values ('x001', 1, 2, 3)"

'** ストアド呼び出し
  cd.execute
  msgbox p0.value

'** トランザクション終了
  'cn.rollbackTrans
  cn.CommitTrans

'** ODBC 接続解除
  cn.Close

  ・実行後の結果は、次のとおりである。

select * from testm;

   key    | data1 | data2 | data3
----------+-------+-------+-------
 x001     |     1 |     2 |     3

select * from test2m;

   key    |  code1
----------+----------
 x001     | triins
 ins001   | aaa
 ins002   | bbb
 ins003   | ccc

■PL/pgSQL、ストアド、トリガ、トランザクションロールバック

  ・PL/SQL とは違い PL/pgSQL 内ではトランザクションコマンドは使えない。
    しかし、ADO - ODBC や JDBC でのトランザクション配下から、呼ばれた
    ストアドやトリガーは、ちゃんとロールバック可能である。
    実用システムとしては、まったく問題ないと考える。

  ・実際の検証は、上記 VB コードの「トランザクション終了」部分を次のよう
    に修正して行った。

'** トランザクション終了
  cn.rollbackTrans
  'cn.CommitTrans

■その他 SQL

  ・「\h 命令」を発見したので、とりあえずは困りそうにない。
    尚、タイトルは、MySQL ですが、『PHP + MySQL 編』の資料中にも
    PostgreSQL の資料があります。

■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK