3 Stimmen

Wie kann man überprüfen, ob eine gespeicherte Prozedur ohne Rückgabewert ausgeführt wurde?

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

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 ist 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

5voto

marc_s Punkte 701497

Der gespeicherte Prozess gibt eine "Anzahl der betroffenen Zeilen" zurück, wenn er ExecuteNonQuery() :

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

So können Sie sich ein Bild davon machen, ob überhaupt etwas unternommen wurde oder nicht. Allerdings: Wenn die Nichtbeeinflussung von Zeilen auch ein gültiges Ergebnis für Ihren Stored Proc ist, können Sie diesen Rückgabewert nicht wirklich verwenden, um zu prüfen, ob er ausgeführt wurde.

Abgesehen davon: Wenn keine Ausnahme auftritt, hat der Aufruf vermutlich funktioniert!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X