2010-11-18 5 views
0

Ich habe eine gespeicherte Prozedur, die eine Reihe von Parametern enthält. Sie werden niemals alle Werte enthalten, einige werden null sein.Ignorieren von Anweisungen basierend auf Nullparametern in einer gespeicherten Prozedur

Wie ignoriere ich diese INSERT-Anweisungen, wenn die Parameter null sind?

Mit firebox für firefox sagt es mir, dass meine Datenbankspalten keine Nullen enthalten können, weshalb ich glaube, dass ich diese gespeicherte Prozedur falsch codiert habe (ich benutze jQuery ajax und einen Webdienst, um mit dieser gespeicherten Prozedur zu kommunizieren)).

ALTER PROCEDURE dbo.Vehicle_InsertAll 
    @Make varchar, 
    @Model varchar, 
    @SubModel varchar, 
    @Liter decimal, 
    @Cylinder varchar, 
    @Fuel varchar, 
    @FuelDel varchar, 
    @Asp varchar, 
    @EngDesg varchar 
AS 
IF @Make IS NOT NULL 
BEGIN 
    INSERT INTO VehicleMakes (VehicleMake) VALUES(@Make) 
    END 
    IF @Model IS NOT NULL 
    BEGIN 
    INSERT INTO VehicleModels (Name) VALUES(@Model) 
    END 
    IF @SubModel IS NOT NULL 
    BEGIN 
    INSERT INTO VehicleSubModels (Name) VALUES(@SubModel) 
    END 
    IF @Liter IS NOT NULL 
    BEGIN 
    INSERT INTO VehicleLiters (Liters) VALUES(@Liter) 
    END 
    IF @Cylinder IS NOT NULL 
    BEGIN 
    INSERT INTO VehicleCylinders (Cylinders) VALUES(@Cylinder) 
    END 
    IF @Fuel IS NOT NULL 
    BEGIN 
    INSERT INTO VehicleFuel (FuelType) VALUES (@Fuel) 
    END 
    IF @FuelDel IS NOT NULL 
    BEGIN 
    INSERT INTO VehicleFuelDelivery (Delivery) VALUES (@FuelDel) 
    END 
    IF @Asp IS NOT NULL 
    BEGIN 
    INSERT INTO VehicleAspiration (Asp) VALUES (@Asp) 
    END 
    IF @EngDesg IS NOT NULL 
    BEGIN 
    INSERT INTO VehicleEngDesg (Designation) VALUES (@EngDesg) 
    END 

    RETURN 

Antwort

0

Diese gespeicherte Prozedur sollte nicht versuchen, NULL s in eine beliebige Tabelle einzufügen. Ihre IF Anweisungen verhindern das. Sind Sie sicher, dass die Fehlermeldung Ihnen nicht mitteilt, dass die Parameter nicht NULL sein können? Wenn ja, ist die Art und Weise, es zu beheben nur die Parameter Standardwerte geben:

ALTER PROCEDURE dbo.Vehicle_InsertAll 
    @Make varchar = null, 
    @Model varchar = null, 
    @SubModel varchar = null, 
    @Liter decimal = null, 
    @Cylinder varchar = null, 
    @Fuel varchar = null, 
    @FuelDel varchar = null, 
    @Asp varchar = null, 
    @EngDesg varchar = null 
AS 
<Stored Procedure Statements> 

ich auch explizit würde vorschlagen, dass auch die Größe aller Ihrer varchar und Dezimal-Parameter deklarieren, anstatt sich auf die Standardeinstellungen zu verlassen.

+0

Also das Problem endete damit, dass, wenn ich den Wert eines leeren Textfelds in jquery und übergeben an meinen Web-Service mit Json, Json offenbar nicht Null-Wert an den Webservice übergeben. –

Verwandte Themen