2010-11-18 3 views
0

많은 매개 변수가 포함 된 저장 프로 시저가 있습니다. 그들은 모두 값을 포함하지 않으며, 일부는 null입니다.저장 프로 시저의 null 매개 변수를 기반으로하는 문을 무시합니다.

매개 변수가 null 인 경우 어떻게 이러한 삽입 문을 무시합니까?

Firefox 용 방화 광을 사용하면 내 데이터베이스 열에 null이 포함될 수 없다는 것을 알리고 있습니다. 따라서이 저장 프로 시저를 잘못 코딩 한 것입니다. (jQuery 아약스와 웹 서비스를 사용하여이 저장 프로 시저와 통신합니다.).

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 

답변

0

이 저장 프로시 저는 NULL을 어떤 테이블에도 삽입해서는 안됩니다. 귀하의 IF 진술이 그것을 막고 있습니다. 매개 변수가 NULL이 될 수 없다는 오류 메시지가 표시되지 않습니까? 그래서, 그것을 해결하는 방법 인 경우 단지 매개 변수의 기본값을 제공합니다 :

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> 

내가 명시 적으로 오히려 기본값에 의존하지 않고,뿐만 아니라 모든 VARCHAR 및 소수점 매개 변수의 크기를 선언하는 것이 좋습니다 것입니다.

+0

그래서 문제는 jquery에서 빈 텍스트 상자의 값을 가져 와서 json을 사용하여 웹 서비스에 전달할 때 json이 null 값을 웹 서비스에 전달하지 않는 것입니다. –

관련 문제