2013-06-19 218 views
0

我有一个将数据插入表中的SQL Server存储过程2008年存储过程返回空

这里是我的存储过程:

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 

但是当插入到表中,该值成为零,为什么^ h appens?我的插入语句有问题吗?

+2

在桌子上是否有INSERT触发器?也许这是将值设置为NULL? – DeanOC

+0

@DeanOC ahhh我的坏,我从其他人处理项目,他没有告诉我有关触发器,谢谢你给我一个插入触发器的东西:) – Sabilv

回答

1

试试这个

SET NOCOUNT ON;然后SP不Becouse这个你command.executenonqeury返回值 需要其他的结果明智它回滚操作 插入语句这么写选择SCOPE_IDENTITY()返回最后插入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