2010-12-30 7 views
3

Ich führe eine gespeicherte Prozedur aus, die keinen Rückgabewert hat. Wie kann ich überprüfen, ob es tatsächlich ausgeführt wurde? Hier ist der Code:Wie kann überprüft werden, dass eine gespeicherte Prozedur ohne Rückgabewert ausgeführt wurde?

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(); 

Und hier wird die gespeicherte Prozedur:

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

Welche Sprache verwenden Sie? Welche Datenbank? Warum sind Sie nicht sicher, ob Ihr Code die gespeicherte Prozedur ausgeführt hat? – Oded

+0

Ich bin in allem, was Datenbanken betrifft, unerforscht. Es ist eine MySQL-Datenbank. Ich möchte nur irgendwie überprüfen, dass die gespeicherte Prozedur tatsächlich ausgeführt wurde. –

+0

Und was _language_ verwenden Sie? Warum musst du das überprüfen? Wenn Sie es angerufen haben und es gab keine Ausnahme, wurde es aufgerufen. – Oded

Antwort

5

Die gespeicherte Prozedur wird wieder eine "Anzahl der betroffenen Zeilen", wenn ExecuteNonQuery() mit:

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

Diese gibt Ihnen eine Idee, ob überhaupt etwas gemacht wurde oder nicht. Allerdings: Wenn Sie keine Zeilen beeinflussen, ist auch ein gültiges Ergebnis für Ihre gespeicherte Prozedur, Sie können diesen Rückgabewert nicht wirklich verwenden, um zu überprüfen, ob er ausgeführt wurde.

Ansonsten: Wenn keine Ausnahme auftritt, hat der Anruf vermutlich funktioniert!

+0

Das macht jetzt Sinn. Vielen Dank. –