1

기본 외래 키 관계가있는 두 개의 테이블이 있습니다. 외래 키 관계의 테이블에 null이 될 수있는 일부 열이 있습니다 (fk 열이 아님) Null 값 (Path1, Path2, ...)을 사용할 수있는 열을 제외한 모든 입력 값으로 다음 sp를 실행할 때 Path5) 컴파일러에서 Path1, Path2 ... Path5를 null로 설정할 수 없습니다.널 (NULL) 컬럼에 대한 입력을 요구하는 저장 프로시 듀어

ALTER PROCEDURE [dbo].[Submit_Product] 
    @SubjectId uniqueidentifier, 
    -- ... other required parameters ... 

    -- optional parameters: 
    @Path1 nvarchar(75), 
    @Path2 nvarchar(75), 
    @Path3 nvarchar(75), 
    @Path4 nvarchar(75), 
    @Path5 nvarchar(75) 
AS 
... 

답변

4

오류가 귀하의 응용 프로그램에서 온 것 같아요 저장된 프로 시저를 컴파일하지?

ALTER PROCEDURE [dbo].[Submit_Product] 
    ( 
    @SubjectId uniqueidentifier, 
    @City nvarchar(30), 
    @Area nvarchar(20), 
    @Description nvarchar(400), 
    @ContactNo nvarchar(15), 
    @UserId int, 
    /*Fk Table*/ 
    @Path1 nvarchar(75) = null, 
    @Path2 nvarchar(75) = null, 
    @Path3 nvarchar(75) = null, 
    @Path4 nvarchar(75) = null, 
    @Path5 nvarchar(75) = null 
    ) 
AS 

을 그리고 가장 좋은 방법으로, 나는 미래의 이전 버전과의 호환성 함정을 피하기 위해 삽입 문에서 열 이름을 지정하는 것이 좋습니다 ... :

어떤 경우에, 당신은 다음처럼 저장된 프로 시저에 기본값을 설정해야

INSERT INTO dbo.ImagePath (Id, Path1, Path2, Path3, Path4, Path5) 
VALUES (
    @SubjectId, 
    @Path1, 
    @Path2, 
    @Path3, 
    @Path4, 
    @Path5 
) 

이렇게하면 다른 값을 기본값으로 추가 할 수 있으며 기존 저장된 procs는 영향을받지 않습니다.

2

null 값을 허용해야하는 값에 대해 SP에 기본값을 추가해야합니다. 예를 들어

: 당신이 다른 가치를 제공하지 않는 경우

@test nvarchar(200) = NULL 

는 그 다음은 null 값을 삽입합니다.