在页面上有一个文本框,在程序中把文本框的值传到存储过程里面,在存储过程中如下判断竟然失败,不知道为什么?
@username  varchar(20)--文本框的值if @username=''
   begin
       --当文本框为空时不会执行这里 ????
       ....
   end
else
   begin
       ....
   end不知道怎么来判断???

解决方案 »

  1.   

    用is null 判断下
    if  @username is null
    begin
    end
    else
    begin
    end
      

  2.   

    用is null 也不行,高手救命啊
      

  3.   

    环境是vs2005 en,怎么会这样呢?以前在2003中文版的时候也是这么写,都没问题啊
      

  4.   

    代码如下:
    this.SqlDataSource1.SelectParameters.Add("@RoleId", TypeCode.Int64, this.drpRoles.SelectedValue);
            this.SqlDataSource1.SelectParameters.Add("@UserName", TypeCode.String, this.txtUserName.Text);
      

  5.   

    if isnull(@username, '') = ''
    if len(isnull(@username, '')) = 0
      

  6.   

    select @username看看呢?或者看看len(@username)
      

  7.   

    this.SqlDataSource1.SelectParameters.Add("@RoleId", TypeCode.Int64, this.drpRoles.SelectedValue);
            this.SqlDataSource1.SelectParameters.Add("@UserName", TypeCode.String, this.txtUserName.Text.Trim());-----
    加上这个去除前后空格
    .Trim()再
    if isnull(@username, '') = ''
      

  8.   

    传参数进去还真搞不定它,只好在存储过程中定义了默认值 
    @username = null
    然后在程序中这样判断一下
    if (txtUserName.Text.Trim()!="")
       this.SqlDataSource1.SelectParameters.Add("@UserName", TypeCode.String, this.txtUserName.Text);如果为空就不加这个参数,使用存储过程的默认值然后在存储过程里判断一下if @username is null
       begin
          .....
       end
    else
       begin
          .....
       end
    通过。。
      

  9.   

    if ltrim(rtrim(@username))=''
    if len(ltrim(rtrim(@username)))=0