2011年5月 3日

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

?ありがとうございます。

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


SELECT create_tmp_records1(var_col_TIME_function('11'));
SELECT insert_tmp_records1(var_col_TIME_sub_function('11'));
SELECT create_tmp_records2(var_col_TIME_function('11'));
SELECT insert_tmp_records2(var_col_COALESCE_sub_function('11'), '11');
SELECT create_tmp_records3(var_col_TIME_function('11'));
SELECT insert_tmp_records3(var_col_function('11'), '11');
SELECT create_tmp_records4(var_col_TIME_function('11'));
SELECT insert_tmp_records4(var_col_function('11'), '11');
SELECT create_tmp_records5(var_col_TIME_function('11'));
SELECT insert_tmp_records5(var_col_function('11'), '11');
SELECT create_tmp_records(var_col_TIME_function('11'));
SELECT insert_tmp_records(var_col_function('11'));
SELECT update_tmp_records4(var_col_function('11'));
SELECT update_tmp_records5(var_col_function('11'));
SELECT * FROM tmp_records;
のように引数部分に値を直接書いてpgAdmin3からSQLで実行すると
出力ビューには結果のレコードが表示されます。

そこで、同じように今度はパラメータ(:n_id)を用いて
C#に書いて実行させようとしていますが
:n_idのような書き方が構文エラーになるのか(Npgsqlかストアドか)
パラーメータが認識されていないためか
ERROR: 42601: syntax error at or near ":"

     da.Fill(ds, "results");の部分でエラーになってしまいます。

よろしくお願いします。

以下が、エラーになるコードです。

public partial class FormReportsResults : Form
{
  private NpgsqlConnection m_conn = new
NpgsqlConnection(PostgreSQLTEst.Properties.Settings.Default.PostgresConnect);
   // (接続は間違いなくできています)
   private NpgsqlDataAdapter da = new NpgsqlDataAdapter();
   private DataSet ds = new DataSet();
    public FormReportsResults()
     {
InitializeComponent();
     }
     private void FormReportsResults_Load(object sender, EventArgs e)
da.SelectCommand = new NpgsqlCommand
(
"SELECT create_tmp_records1(var_col_TIME_function(:n_id));"
+ "SELECT
insert_tmp_records1(var_col_TIME_sub_function(:n_id));"
+ "SELECT
create_tmp_records2(var_col_TIME_function(:n_id));"
+ "SELECT
insert_tmp_records2(var_col_COALESCE_sub_function(:n_id), :n_id);"
+ "SELECT
create_tmp_records3(var_col_TIME_function(:n_id));"
+ "SELECT insert_tmp_records3(var_col_function(:n_id),
:n_id);"
+ "SELECT
create_tmp_records4(var_col_TIME_function(:n_id));"
+ "SELECT insert_tmp_records4(var_col_function(:n_id),
:n_id);"
+ "SELECT
create_tmp_records5(var_col_TIME_function(:n_id));"
+ "SELECT insert_tmp_records5(var_col_function(:n_id),
:n_id);"
+ "SELECT create_tmp_records(var_col_TIME_function(:n_id));"
+ "SELECT insert_tmp_records(var_col_function(:n_id));"
+ "SELECT update_tmp_records4(var_col_function(:n_id));"
+ "SELECT update_tmp_records5(var_col_function(:n_id));"
+ "SELECT * FROM tmp_records;",
m_conn
);
     da.Fill(ds, "results"); ' ←ここでエラー
     CrResults myReport = new CrResults();
     myReport.SetDataSource(ds);
     CrvResults.ReportSource = myReport;
}


投稿者 xml-rpc : 2011年5月 3日 17:26
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103528
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。