2016-11-10 105 views
0

我有以下存儲proc給我,這是使用Web應用程序插入到下面的表中。當你點擊提交表單時,我收到以下錯誤。無法將值Null插入列打印 - 插入失敗

無法將NULL值插入'Printed'列中,表'CAB.dbo.Participants';列不允許有空值。 INSERT失敗。 該語句已終止。

我已經查明proc和已經得到以下

declare @p20 int 
set @p20=NULL 
exec sp_AddParticipant @P_FirstName='John ',@P_MI='m',@P_LastName='French',@P_Company='',@P_Email='[email protected]',@P_Address='10045 Hampton Rd',@P_City='Sacramento ',@P_State='ca',@P_Zip='95864',@P_Phone='917-349-9845',@Gift=0,@P_Age='',@P_Education='',@P_Income='',@P_Commmethod='Email',@CC_Ty pe='Visa',@CC_Name='John French',@CC_Number='4822820089199876',@CC_Expires='12/19',@[email protected] output 
    select @p20 
    go 

    Any help would be much appreciated. 

    SET ANSI_NULLS OFF 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    ALTER PROCEDURE [dbo].[sp_AddParticipant] 
    @P_FirstName varchar(20), 
    @P_MI varchar(5)= Null, 
    @P_LastName varchar(30), 
    @P_Company varchar(80)= Null, 
    @P_Email varchar(50), 
    @P_Address varchar(40), 
    @P_City varchar(40), 
    @P_State varchar(15), 
    @P_Zip varchar(10), 
    @P_Phone varchar(25), 
    @Gift bit, 
    @GiftType varchar(10) = Null, 
    @G_FirstName varchar(20)= Null, 
    @G_MI varchar(5)= Null, 
    @G_LastName varchar(30)= Null, 
    @G_Company varchar(80)= Null, 
    @G_Email varchar(50)= Null, 
    @G_Address varchar(40)= Null, 
    @G_City varchar(40)= Null, 
    @G_State varchar(15)= Null, 
    @G_Zip varchar(10)= Null, 
    @G_Phone varchar(25)= Null, 
    @P_Age varchar(20)= Null, 
    @P_Education varchar(20)= Null, 
    @P_Income varchar(20)= Null, 
    @P_Commmethod varchar(10)= Null, 
    @CC_Type varchar(25), 
    @CC_Name varchar(50), 
    @CC_Number varchar(16), 
    @CC_Expires varchar(7), 
    @ID bigint OUTPUT 

     AS 
    INSERT INTO Participants 
    (P_FIRSTNAME,P_MI,P_LASTNAME,P_COMPANY,P_EMAIL,P_ADDRESS,P_CITY,P_STATE,P  _ZIP,P_PHONE,GIFT,GIFTTYPE, 
    G_FIRSTNAME,G_MI,G_LASTNAME,G_COMPANY,G_EMAIL,G_ADDRESS,G_CITY,G_STATE,G_  ZIP,G_PHONE,P_AGE,P_EDUCATION, 
    P_INCOME,P_COMMMETHOD,CC_TYPE,CC_NAME,CC_NUMBER,CC_EXPIRES) 
    VALUES 
    (@P_FIRSTNAME,@P_MI,@P_LASTNAME,@P_COMPANY,@P_EMAIL,@P_ADDRESS,@P_CITY,@P  _STATE,@P_ZIP,@P_PHONE,@GIFT,@GIFTTYPE, 
    @G_FIRSTNAME,@G_MI,@G_LASTNAME,@G_COMPANY,@G_EMAIL,@G_ADDRESS,@G_CITY,@G_  STATE,@G_ZIP,@G_PHONE,@P_AGE,@P_EDUCATION, 
    @P_INCOME,@P_COMMMETHOD,@CC_TYPE,@CC_NAME,@CC_NUMBER,@CC_EXPIRES) 

    SELECT @ID = @@IDENTITY 
+2

那麼你的插入語句中沒有'Printed'列,所以它會嘗試插入null,因爲該列不允許空值,所以會出現該錯誤。這裏還有什麼要解釋的? – DavidG

回答

0

可能的Printed領域是具有NOT NULL約束,沒有默認值設定表中的一個新領域。此過程似乎沒有嘗試將數據插入到該字段中,並且由於它不能插入NULL插入失敗。

查看對該表的最近更改,嘗試找出如何更改過程以將正確值插入該字段。

相關問題