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

yukihito miso oira3ryu @ gmail.com
2011年 5月 2日 (月) 00:07:58 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: ユーザマニュアル等を
参考にしているのですが、解決に至っておりません。
どなたか誤りをご指摘いただければと思います。

            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;


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