[pgsql-jp: 40759] Re: ストアドファンクションの順次実行
Tomoaki Sato
sato @ sraoss.co.jp
2011年 5月 2日 (月) 10:31:13 JST
佐藤です。
> お世話になっております。
> よろしくお願いいたします。
>
> 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 @ sraoss.co.jp>
SRA OSS, Inc. Japan
pgsql-jp メーリングリストの案内