行を削除するストアドプロシージャがあります。サンプルコード:
CREATE PROCEDURE [dbo].[ap_um_delete_tems_grid]
(
@agency char(3)
, @subagency char(1)
, @grid_id int
, @role_id int
)
AS
DELETE FROM [grid_setup]
WHERE agency = @agency
AND subagency = @subagency
AND gs.grid_id = @grid_id
AND role_id = @role_id
このSProcをSqlMgmtStudioから直接実行すると、正常に動作します。ただし、トランザクションを使用してC#コードでこれを実行しようとすると、非常に興味深いSqlExceptionが発生します。
'ap_um_delete_tems_grid'の近くの構文が正しくありません
例外の詳細には、行番号1で発生すると記載されています。C#コードは次のとおりです。
using (SqlConnection connection = new SqlConnection(conn.TemsConnectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start the local transaction
transaction = connection.BeginTransaction("GridReplaceTransaction");
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText = "ap_um_delete_tems_grid";
SqlParameter parm = new SqlParameter();
// Adding the parameters
int cnt = command.ExecuteNonQuery();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
}
}
上記のコードは、トランザクションに入れる前に機能しました。構文エラーが発生するのはなぜですか?おそらく、トランザクションをサポートするためにSProcに何かが必要なためですか?それとも私は何か他のものを台無しにしていますか?
注:1回の削除でトランザクションは必要ないと言わないでください。上記はマルチステッププロセスの一部です。つまり、削除後に新しい行を追加します。ありがとう。