2013-06-19 6 views
0

I가 SQL 서버의 테이블에 데이터를 삽입하기위한 저장 프로 시저 2008저장 프로 시저는 null를 돌려줍니다

여기 내 저장 프로 시저의 :

ALTER PROCEDURE [dbo].[RegisterOnline_Insert] 
    [email protected] int, 
    @SiteID as varchar(50), 
    @CustName as varchar(100), 
    @Address as varchar(255), 
    @Phone as varchar(20), 
    @HP as varchar(20), 
    @Email as varchar(100), 
    @Description as varchar(500), 
    @IsValid as bit 


AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 

DECLARE @House as numeric(10,0) 
    DECLARE @Fibernode as varchar(50) 
    DECLARE @ftax as numeric(5,0) 
    DECLARE @Demographics2 AS VARCHAR(50) 
    DECLARE @PostalCode as varchar(10) 
    DECLARE @InputBy as varchar(50) 
    DECLARE @addr as varchar(max) 
    DECLARE @addrid as int 


    SET @InputBy = '[Website]' 
    SET @addr = dbo.udf_StripHTML(@Address) 

    SELECT @PostalCode = postal_code, 
      @ftax = ftax, 
      @Fibernode = fibernode, 
      @Demographics2 = demographics2, 
      @addrid = Address_id 
    FROM dbo.TEMP_HOUSE_INFO2_SITE 
    WHERE site_id = @SiteID 


    SET NOCOUNT ON; 

     INSERT INTO tbMynetOrder(
       OrderType, 
       SITE_ID , 
       AddressID, 
       House, 
       Cust, 
       CustName, 
       Address, 
       PostalCode, 
       Fibernode, 
       PhoneOld, 
       Phone, 
       HPOld, 
       HP, 
       Email, 
       ftax, 
       BoD, 
       ContactPerson, 
       IDCard, 
       PaymentMethod, 
       Description, 
       SalesCode, 
       SchedDate, 
       SchedTimeID, 
       Complete, 
       InstallationCost, 
       Source, 
       Covered, 
       CCIssueBy, 
       CCType, 
       CCNo, 
       CCExpireDate, 
       CCHolderName, 
       CCHolderPhone, 
       CCFrequency, 
       CCPromoService, 
       CCAmount, 
       Demographics2, 
       SCA, 
       BlackList, 
       InputBy, 
       InputDate  
      ) 
      VALUES(
       1, -- Order Type 
       @SiteID, 
       ISNULL(@addrid,0), -- Site ID 
       null, -- House 
       null, -- Cust 
       UPPER(@CustName), -- Customer Name 
       @addr, -- Address 
       @PostalCode, -- PostalCode 
       @Fibernode, -- FiberNode 
       @Phone, -- PhoneOld 
       null, -- Phone 
       @HP, -- HP Old 
       @HP, -- HP 
       @Email, -- Email 
       @ftax, -- ftax 
       null, -- BOD 
       null, -- Contact Person 
       null, -- ID Card 
       null, -- Payment Method 
       @Description, -- Description 
       null, -- Sales Code 
       null, --SchedDate 
       null, -- SchedTimeID 
       null, -- Complete 
       null, -- InstallationCost 
       3, -- Source , 3 = Website 
       @IsValid, -- Covered 
       null, -- CCIssueBy 
       null, -- CCType 
       null, -- CCNo 
       null, -- CCExpireDate 
       null, -- CCHolderName 
       null, -- CCHolderPhone 
       null, -- Frequency 
       null, -- CCPromo 
       null, -- CCAmount 
       @Demographics2, -- Demographics2 
       null, -- SCA 
       null, -- Blacklist 
       @InputBy, -- Inputby 
       GETDATE() -- Input Date 

      )  

END 

@SiteID 매개 변수 값에 문제가 , 때이 값을 가지고, 어떤 값을 얻기 위해 처리하고 결과를 제공 :

SELECT @PostalCode = postal_code, 
       @ftax = ftax, 
       @Fibernode = fibernode, 
       @Demographics2 = demographics2, 
       @addrid = Address_id 
     FROM dbo.TEMP_HOUSE_INFO2_SITE 
     WHERE site_id = @SiteID 

하지만 테이블에 삽입, 값이 null되었을 때, 왜 시간을 appens? 내 성명서에 문제가있어?

+2

테이블에 INSERT 트리거가 있습니까? 아마도이 값을 NULL로 설정하고 있습니까? – DeanOC

+0

@DeanOC ahhh 내 잘못, 내가 다른 사람으로부터 프로젝트를 처리하고, 그는 방아쇠에 관해서 말하지 않았어. – Sabilv

답변

1

시도이

SET NOCOUNT ON;는 SP는 현명한는 마지막에 삽입() 반환 선택 SCOPE_IDENTITY 쓰기 때문에 삽입 문 다음에 다시 작동 롤 다른 결과를 요구하는이 당신의 command.executenonqeury의 렸기 때문에 값을 반환하지 PK

삽입 쓰기

당신은 지금 당신의 사전 처리를 선택 SCOPE_IDENTITY()

select scope_identity() 

를 작성하는 경우 이걸 좋아해.

ALTER PROCEDURE [dbo].[RegisterOnline_Insert] 
    [email protected] int, 
    @SiteID as varchar(50), 
    @CustName as varchar(100), 
    @Address as varchar(255), 
    @Phone as varchar(20), 
    @HP as varchar(20), 
    @Email as varchar(100), 
    @Description as varchar(500), 
    @IsValid as bit 


AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 

DECLARE @House as numeric(10,0) 
    DECLARE @Fibernode as varchar(50) 
    DECLARE @ftax as numeric(5,0) 
    DECLARE @Demographics2 AS VARCHAR(50) 
    DECLARE @PostalCode as varchar(10) 
    DECLARE @InputBy as varchar(50) 
    DECLARE @addr as varchar(max) 
    DECLARE @addrid as int 


    SET @InputBy = '[Website]' 
    SET @addr = dbo.udf_StripHTML(@Address) 

    SELECT @PostalCode = postal_code, 
      @ftax = ftax, 
      @Fibernode = fibernode, 
      @Demographics2 = demographics2, 
      @addrid = Address_id 
    FROM dbo.TEMP_HOUSE_INFO2_SITE 
    WHERE site_id = @SiteID 


    SET NOCOUNT ON; 

     INSERT INTO tbMynetOrder(
       OrderType, 
       SITE_ID , 
       AddressID, 
       House, 
       Cust, 
       CustName, 
       Address, 
       PostalCode, 
       Fibernode, 
       PhoneOld, 
       Phone, 
       HPOld, 
       HP, 
       Email, 
       ftax, 
       BoD, 
       ContactPerson, 
       IDCard, 
       PaymentMethod, 
       Description, 
       SalesCode, 
       SchedDate, 
       SchedTimeID, 
       Complete, 
       InstallationCost, 
       Source, 
       Covered, 
       CCIssueBy, 
       CCType, 
       CCNo, 
       CCExpireDate, 
       CCHolderName, 
       CCHolderPhone, 
       CCFrequency, 
       CCPromoService, 
       CCAmount, 
       Demographics2, 
       SCA, 
       BlackList, 
       InputBy, 
       InputDate  
      ) 
      VALUES(
       1, -- Order Type 
       @SiteID, 
       ISNULL(@addrid,0), -- Site ID 
       null, -- House 
       null, -- Cust 
       UPPER(@CustName), -- Customer Name 
       @addr, -- Address 
       @PostalCode, -- PostalCode 
       @Fibernode, -- FiberNode 
       @Phone, -- PhoneOld 
       null, -- Phone 
       @HP, -- HP Old 
       @HP, -- HP 
       @Email, -- Email 
       @ftax, -- ftax 
       null, -- BOD 
       null, -- Contact Person 
       null, -- ID Card 
       null, -- Payment Method 
       @Description, -- Description 
       null, -- Sales Code 
       null, --SchedDate 
       null, -- SchedTimeID 
       null, -- Complete 
       null, -- InstallationCost 
       3, -- Source , 3 = Website 
       @IsValid, -- Covered 
       null, -- CCIssueBy 
       null, -- CCType 
       null, -- CCNo 
       null, -- CCExpireDate 
       null, -- CCHolderName 
       null, -- CCHolderPhone 
       null, -- Frequency 
       null, -- CCPromo 
       null, -- CCAmount 
       @Demographics2, -- Demographics2 
       null, -- SCA 
       null, -- Blacklist 
       @InputBy, -- Inputby 
       GETDATE() -- Input Date 

      )  
select scope_identity() 
END 
관련 문제