[pgsql-jp: 40760] Re: ストアドファンクションの順次実行

Itagaki Takahiro itagaki.takahiro @ gmail.com
2011年 5月 2日 (月) 10:48:17 JST


2011/5/2 yukihito miso <oira3ryu @ gmail.com>:
>   syntax error at or near "insert_tmp_records1"
>            da.SelectCommand = new NpgsqlCommand
>            (
>                "create_tmp_records1(var_col_TIME_function(:n_id));"
>               + "insert_tmp_records1(var_col_TIME_sub_function(:n_id));"
...
>               + "SELECT * FROM tmp_records;",
>                    m_conn
>            );
>            da.SelectCommand.CommandType = CommandType.StoredProcedure;

Npgsql は良く知らないのですが、ざっと見た感じでは:

・CommandType.StoredProcedure で複文は使えるんでしょうか?
 マニュアルを見る限り、ストアドの名前を1つ書くだけに読めます。
・CommandType.StoredProcedure なのに、最後に "SELECT *" という
 普通のSQLが混ざるのはおかしい気がします。

複文を使わず、関数やSQLごとにコマンドを分ける必要があるのでは
ないでしょうか? また、PostgreSQL に限っては、SQLからストアドが
実行できるので、関数呼び出しすべてに SELECT を付け、
普通のSQLとして実行する手もあるかもしれません。

-- 
Itagaki Takahiro


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