2011年5月 2日

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

佐藤です。

> お世話になっております。
> よろしくお願いいたします。
>
> FreeBSD 8.2 + PostgreSQL 9.0.4 + Npgsql
> Windows 7 Pro + VS 2010 C# Proです。
>

> イメージとしては
> 一時テーブルを作成
> 一時テーブルにインサート
> をストアドファンクションを順次実行し繰り返す
> その結果をFillしてCrystalReportsに渡したいのですが
> デバッグすると
>
> da.Fill(ds, "results");の部分で
>
>   syntax error at or near "insert_tmp_records1"
>
> でエラーになって止まります。
> ストアドを順次実行する部分が間違っているのかと
> 思っているのですが、Npgsql: ユーザマニュアル等を
> 参考にしているのですが、解決に至っておりません。
> どなたか誤りをご指摘いただければと思います。

あまり Npgsql について詳しくないのですが、関数の呼び出し方が誤っている
と思います。

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));"
:

>
> da.SelectCommand = new NpgsqlCommand
> (
> "create_tmp_records1(var_col_TIME_function(:n_id));"
> + "insert_tmp_records1(var_col_TIME_sub_function(:n_id));"
> + "create_tmp_records2(var_col_TIME_function(:n_id));"
> +
> "insert_tmp_records2(var_col_COALESCE_sub_function(:n_id), :n_id);"
> + "create_tmp_records3(var_col_TIME_function(:n_id));"
> + "insert_tmp_records3(var_col_function(:n_id), :n_id);"
> + "create_tmp_records4(var_col_TIME_function(:n_id));"
> + "insert_tmp_records4(var_col_function(:n_id), :n_id);"
> + "create_tmp_records5(var_col_TIME_function(:n_id));"
> + "insert_tmp_records5(var_col_function(:n_id), :n_id);"
> + "create_tmp_records(var_col_TIME_function(:n_id));"
> + "insert_tmp_records(var_col_function(:n_id));"
> + "update_tmp_records4(var_col_function(:n_id));"
> + "update_tmp_records5(var_col_function(:n_id));"
> + "SELECT * FROM tmp_records;",
> m_conn
> );
> da.SelectCommand.CommandType = CommandType.StoredProcedure;
>
> if (cmb_n_id.SelectedItem == null)
> {
> da.SelectCommand.Parameters.Add(new NpgsqlParameter("n_id",
> NpgsqlTypes.NpgsqlDbType.Integer, 0, "n_id",
> ParameterDirection.Input, false, 0, 0, DataRowVersion.Current,
> DBNull.Value));
> }
> else
> {
> DataRowView row = (DataRowView)cmb_n_id.SelectedItem;
> da.SelectCommand.Parameters.AddWithValue("n_id", row["n_id"]);
> }
>
> da.Fill(ds, "results");
> CrResults myReport = new CrResults();
> myReport.SetDataSource(ds);
> CrvResults.ReportSource = myReport;

----
Tomoaki Sato <sato@xxxxx>
SRA OSS, Inc. Japan


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




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