2010-12-30 16 views
3

戻り値のないストアドプロシージャを実行しています。実際に実行されたことをどのように確認できますか?ここでは、コードは次のようになります。戻り値のないストアドプロシージャが実行されたことを確認する方法はありますか?

this.dbProviderFactory = DalFactory.GetFactory(this.adapterConfiguration); 
DbConnection dbConnection = dbProviderFactory.CreateConnection(); 

dbConnection.ConnectionString = this.adapterConfiguration.DatabaseInformation.ExternalDatabaseInformation.connectionString; 
dbConnection.Open(); 

DbCommand cmd = dbConnection.CreateCommand(); 
cmd.CommandText = "h_AS_SP_ResetUnfinishedJobs"; 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.ExecuteNonQuery(); 

そしてここでは、ストアドプロシージャです:

ALTER PROCEDURE [dbo].[h_AS_SP_ResetUnfinishedJobs] 
AS 
BEGIN 
-- Delete all unfinished jobs where the force flag has not been set... 
DELETE FROM h_AS_mds_MetaDataStatus 
WHERE mds_status NOT IN (11,12) AND mds_force = 0 
END 
+0

あなたはどの言語を使用していますか?どのデータベースですか?なぜあなたのコードがストアドプロシージャを実行しているか分からないのですか? – Oded

+0

私はデータベースに関するすべてのことで未熟だ。これはMySQLデータベースです。私はちょうどストアドプロシージャが実際に実行されたことをどういうわけかチェックしたい。 –

+0

あなたはどんな_language_を使用していますか?なぜチェックする必要がありますか?あなたがそれを呼び出して例外がなかったなら、それは呼び出されました。 – Oded

答えて

5

ExecuteNonQuery()を使用するときにストアドプロシージャは、 "影響を受けた行数" を返します:

DbCommand cmd = dbConnection.CreateCommand(); 
cmd.CommandText = "h_AS_SP_ResetUnfinishedJobs"; 
cmd.CommandType = CommandType.StoredProcedure; 
int rowsAffected = cmd.ExecuteNonQuery(); 

この何かが行われたかどうかをあなたに知らせるでしょう。ただし、行に影響を与えない場合は、ストアドプロシージャの有効な結果もあります。実行されたかどうかを確認するために、その戻り値を実際に使用することはできません。

例外:例外が発生しない限り、おそらく呼び出されました!

+0

それは今や理にかなっています。ありがとうございました。 –

関連する問題