Diese gespeicherte Prozedur unterhalb füllt meine Projectphase
Parameter. Wie Sie sehen können, muss der Benutzer zuerst @PurchaseOrder
auswählen, was dann den Projectphase-Parameter füllt.NULL Werte in mehrwertigen Parameter
CREATE PROCEDURE [dbo].[USP_GetProjectPhase]
@PurchaseOrder INT
AS
SELECT
pp.ProjectPhaseID, pp.Phase
FROM
ProjectPhase pp
WHERE
@PurchaseOrder = pp.PurchaseOrderId
Nun, wenn der Benutzer ein PurchaseOrder
auswählt, die in der Tat Projectphases
hat, geht alles gut. Das Problem liegt in den Kaufaufträgen, die keine ProjectPhase
haben.
Die Abfrage, die für meine im Bericht angezeigte Datenmenge verwendet wird, hat die folgende Zeile in der WHERE-Klausel. Es ist ein mehrwertiger Parameter, da der Benutzer mehrere Projektphasen auswählen kann.
WHERE
reg.ProjectPhaseId IN (SELECT Value
FROM fnLocal_CmnParseList(@Phase,','))
Ich habe UNIONS mit NULL, NULL versucht. Ich habe Zeug mit ISNULL versucht, aber ich kann nicht scheinen, die Abfrage zu erhalten, wenn @ProjectPhase
NULL ist.
Einige Hilfe würde sehr geschätzt werden, weil ich mir jetzt schon zu lange den Kopf zerbrochen habe. Dank
wenn @Phase null ist, dann macht es Sinn, dass der Datensatz leer zurückgibt. – Jayvee
ja ich weiß, aber wie kann ich es nicht leer machen. Ist es nur eine kleine Anpassung in meiner Where-Klausel? Die Projektphase muss mehrere Werte haben oder einen NULL-Wert haben können. –
Vielleicht habe ich einen Moment der erweiterten Dichte, aber es ist nicht klar, ob Sie in der Lage sein wollen, Zeilen, in denen "ProjectPhaseId" tatsächlich NULL ist, abrufen zu können. Etwas wie 'WHERE reg.ProjectPhaseId IN (SELECT Wert FROM fnLocal_CmnParseList (@Phase, ',')) oder (@Phase ist NULL und reg.ProjectPhaseId ist NULL)'. Vielleicht könnten Sie mit einigen Beispieldaten klären. – HABO