1

ich etwas ähnlich die folgenden WHERE Klausel in meiner SQL-Anweisung habe:besserer Weg, um diese SQL schreibt WHERE-Klausel

AND (ipdp.UserID!=dbo.fn_userid(ipdp.ItemID) OR dbo.fn_userid(ipdp.ItemID) IS NULL) 

aber ich weiß nicht wie, wie dbo.fn_userid Funktion läuft zweimal wird. Wie kann ich diese Codezeile so verbessern, dass sie nur einmal ausgeführt werden muss?

ipdp.UserID ist immer ein Nicht-NULL Integer-Wert

dbo.fn_userid kann eine NULL oder einen Integer-Wert

Prost zurück.

+0

Sind Sie sicher, dass es zweimal läuft? Hat die Funktion Nebenwirkungen oder stellt sie nur einen Wert wiederholt auf einen anderen Wert? – Rup

+0

Es ist in meiner WHERE-Klausel zweimal, so von meinem Wissen ist es läuft zweimal? Derselbe Parameterwert wird beide Male übergeben, daher möchte ich diese Verwendung einschränken. – Curt

+0

In Ihrem Code oben wird die Funktion nur zweimal ausgeführt, wenn der Test in der() falsch ist. Könnten Sie etwas mehr von der Where-Klausel zeigen? –

Antwort

4

Versuchen:

AND ipdp.UserID != ISNULL(dbo.fn_userid(ipdp.ItemID), -1) 
+0

Dank Michael, ich hatte eigentlich gedacht, so etwas wie dies zu tun, aber nicht wissen, wie effizient es sein würde. Danke noch einmal – Curt

Verwandte Themen