Dies ist ein Abschnitt einer meiner gespeicherten Prozeduren:
%Vor% @dataInTable IS NULL
ist falsch in der Syntax, Fehler ist
Muss die skalare Variable "@dataInTable"
deklarieren
Also ändere ich es zu:
%Vor% Das funktioniert, aber wenn @dataInTable
mehr als 1 Element hat, bekomme ich einen Fehler:
Die Unterabfrage hat mehr als einen Wert zurückgegeben. Dies ist nicht erlaubt, wenn die Unterabfrage folgt =,! =, & lt ;, & lt; =, & gt ;, & gt; = oder wenn die Unterabfrage als verwendet wird ein Ausdruck.
Verständlich, also ändere ich es zu:
%Vor%Funktioniert perfekt, was ich habe, ist Performance-Bedenken.
Ich frage mich, ob es eine einfachere Möglichkeit gibt zu überprüfen, ob eine Tabellenvariable leer ist, wie
%Vor%Um zu überprüfen, ob die Tabellenvariable leer ist, verwenden Sie EXISTS wie bereits von anderen Personen erwähnt,
aber
Wenn Sie leere Menge von unbekannter Menge unterscheiden - dann haben Sie keine Wahl - Sie müssen zusätzliche Variable einführen, die angibt, ob leere Menge wirklich leer oder unbekannt ist.
%Vor% Tabellenvariablen unterscheiden sich von skalaren Variablen, daher ist @dataInTable IS NULL
nicht zulässig, wie Sie bereits erwähnt haben. Ich würde Folgendes vorschlagen:
Das Folgende kann auch für Ihre Situation sinnvoll sein, wenn Sie die Anzahl wirklich wissen möchten:
%Vor%Tags und Links sql-server tsql null table-variable