程序出错,提示@outurl需要一个参数
也就是说,不能输入一个空值
那么我要怎么设置才可以让它接受一个空值?

解决方案 »

  1.   

    试试  =DataType.DbNull
      

  2.   

    是修改Vb.net中的代码,还是修改Sql存储过程的代码?
    @outurl等列都是需要保存的,只是要设置为允许用户输入空值。
      

  3.   

    试试在存储过程中定义 @outurl=null
      

  4.   

    用楼上的就可以啦。。试试在存储过程中定义 @outurl=null
      

  5.   

    应该是设计表时@outurl对应的列允许null就可以了吧,
    调用存储过程时只要声明了参数@outurl就可以了,传null也是可以的
      

  6.   

    试试在存储过程中定义 @outurl=null
    我们都是这样用的
      

  7.   

    具体是在哪个地方呢……CREATE PROCEDURE [Art_Topic_insert]
    (@ClassId_1  [int],
     @BeOrder_2  [int],
     @Title_3  [varchar](255),
     @Content_4  [ntext],
     @isShowRe_5  [bit],
     @TitlePicUrl_6  [varchar](255),
     @SubjectId_7  [int],
     @OutUrl_8  [varchar](255),
     @Summary_9  [ntext],
     @isA_10  [bit],
     @isHighLight_11  [bit],
     @isClassTop_12  [bit],
     @isIndexTop_13  [bit],
     @isAllowRe_14  [bit],
     @KeywordId_15  [varchar](255),
     @Author_16  [varchar](50),
     @ContactTheWay_17  [varchar](255),
     @Source_18  [varchar](100),
     @SourceUrl_19  [varchar](255),
     @UserName_20  [varchar](20),
     @UserId_21  [int],
     @UserIp_22  [varchar](20),
     @isBlog_23  [bit],
     @BlogId_24  [bit],
     @UseTable_25  [varchar](20),
     @isOk_26  [bit],
     @TemplateId_27  [int])
    AS
    INSERT INTO [duoluojie].[dbo].[Art_Topic] 
     ( [ClassId],
     [BeOrder],
     [Title],
     [Content],
     [isShowRe],
     [TitlePicUrl],
     [SubjectId],
     [OutUrl],
     [Summary],
     [isA],
     [isHighLight],
     [isClassTop],
     [isIndexTop],
     [isAllowRe],
     [KeywordId],
     [Author],
     [ContactTheWay],
     [Source],
     [SourceUrl],
     [UserName],
     [UserId],
     [UserIp],
     [isBlog],
     [BlogId],
     [UseTable],
     [isOk],
     [TemplateId])  
    VALUES 
    ( @ClassId_1,
     @BeOrder_2,
     @Title_3,
     @Content_4,
     @isShowRe_5,
     @TitlePicUrl_6,
     @SubjectId_7,
     @OutUrl_8,
     @Summary_9,
     @isA_10,
     @isHighLight_11,
     @isClassTop_12,
     @isIndexTop_13,
     @isAllowRe_14,
     @KeywordId_15,
     @Author_16,
     @ContactTheWay_17,
     @Source_18,
     @SourceUrl_19,
     @UserName_20,
     @UserId_21,
     @UserIp_22,
     @isBlog_23,
     @BlogId_24,
     @UseTable_25,
     @isOk_26,
     @TemplateId_27)
      

  8.   

    CREATE PROCEDURE [Art_Topic_insert]
    (@ClassId_1  [int],
     @BeOrder_2  [int],
     @Title_3  [varchar](255),
     @Content_4  [ntext],
     @isShowRe_5  [bit],
     @TitlePicUrl_6  [varchar](255),
     @SubjectId_7  [int],
     @OutUrl_8  [varchar](255),------------------在这里啦
      

  9.   

    在as后面一行就是insert前一行加上
    if @OutUrl_8 is null
     set @OutUrl_8=''
    就可以了
      

  10.   

    1, 用存储过程默认参数,比如
    create procedure testproc 
     @pram1 int = 1
    as
     ……
    go2, 前台传一个空值过去,比如
    YourParam.Value = DBNull.Value;
      

  11.   

    CREATE PROCEDURE [Art_Topic_insert]
    (@ClassId_1  [int]=null,
     @BeOrder_2  [int]=null,
     @Title_3  [varchar]=null(255),
    在类型后面加上“=默认值”,默认值看你的需要来,如@classid_1 int=0
    另外输出参数也可以设置默认值的,如@classid_1 int=0 output
    只要设置了默认值的,在程序中调用存储过程时,这个参数就可以不传值。