Problem Kontext: Ich benutze Visual Studio 2008 und typisierte Dataset, die einen „easy“ Zugang zu executescalar()
gibt den Wert des ersten Feldes der ersten Reihe des ersten recorset (diesen letzten Teil oft ausführen Skalar bieten weggelassen)Wie kann verhindert werden, dass gespeicherte Prozeduren Zwischen-Recordsets zurückgeben?
Das Problem bei diesem Verhalten ist, dass die meisten oft Sie einige andere Anfragen machen wollen, bevor Sie den Wert berechnen mit einer endgültigen select @returnValue
Anweisung zurückgegeben werden.
Also meine Frage ist, im Allgemeinen Wie verhindern Sie, dass ein SP Zwischenrecords zurückgibt? (Ich habe versucht FMTONLY ON SET/OFF, sondern habe unerwünschtes Nebenverhalten)
Eine andere verwandte Frage ist: Wie verhindern Sie eine T-SQL-Anweisung UPDATE aus den aktualisierten Zeilen Rückkehr? Manchmal verwenden Sie UPDATE, um einfach zu aktualisieren ...
danke!
Beispiel:
BEGIN
SET NOCOUNT ON;
declare @c int
select @c=(select count(*) from work where ...)
select @c -- so ExecuteScalar() works
update sousblocs set myfield = @c
where ...
select @c --after the update, won't be seen by ExecuteScalar()
return @c --useless for ExecuteScalar
END
dies mein Problem war, und es kann mit dem ersten "wählen @c" gelöst werden; aber ich frage mich trotzdem, ob Sie recorset Ausgabe deaktivieren können.
"Sie möchten einige andere Anfragen machen" - bitte zeigen Sie uns einen Beispielcode von einem Ihrer Sprocs, um zu veranschaulichen, was Sie hier meinen – AakashM
Ich meine, zum Beispiel berechnen Sie einen Wert mit einem Update gespeichert werden, und Sie möchte diesen Wert zurückgeben. In diesem Fall ist das Update das erste zurückgegebene Recordset – oldbrazil