存取过程中有bit参数,当需要传递null实参时,程序中怎么传递过去啊?比如:
create process myprocess
@name varchar(10),@sex bit
as
……
if @sex is not null
……现在问题是在程序中怎么传递null实参过来?因为需要用false和true与存取过程对应,
如果用Convert.ToBoolean(sex)的话,它会被转换为false或true

解决方案 »

  1.   

    感谢楼上的,但是这样不是变成死的了吗?我要动态的,
    就是用.Parameters["@参数"].Value=形参;
      

  2.   

    还有怎么把数据库中的0和1跟程序中的男和女对应,
    因为我是直接提取到数据集里然后用datagrid显示的,这样就只能显示true和false了
    有没有可能把它显示为男和女?
      

  3.   

    是的,就是说我那参数有可能给传也有可能不传,不传的话就给null
      

  4.   

    是的,就是说我那参数有可能给传也有可能不传,不传的话就给null
    ------------------------------------------------------------
    create process myprocess
    @name varchar(10),@sex bit=null    --这里给这个参数默认值为null
    as-------------------------------------------------------------
    还有怎么把数据库中的0和1跟程序中的男和女对应,
    因为我是直接提取到数据集里然后用datagrid显示的,这样就只能显示true和false了
    有没有可能把它显示为男和女?
    这个问题你可以再程序中处理也可以直接写sql句子处理
    select 性别=case sex when 1 then '男'
                         when 0 then '女'
                         else then '不明'
                end 
    from 表
      

  5.   

    你在程序中判断参数的值不行吗?
    if (p == "")
        .Parameters["@参数"].Value=null;
    else
       .Parameters["@参数"].Value=p;p是你要传的参数。
    还有怎么把数据库中的0和1跟程序中的男和女对应,
    因为我是直接提取到数据集里然后用datagrid显示的,这样就只能显示true和false了
    有没有可能把它显示为男和女?可以写在DataGrid的ItemDataBound事件中
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
                    e.Item.Cells[0].Text = Convert.ToString(e.Item.ItemIndex + 1);
                    if (e.Item.Cells[0].Text == "0")
                    { 
                        e.Item.Cells[0].Text = "女";
                    }
                    else
                    {
                       e.Item.Cells[0].Text = "男";
                     }
     }
      

  6.   

    谢谢上面两位,我大概知道怎么做了
    create process myprocess
    @name varchar(10),@sex bit=null    --这里我是有默认参数null的,只是忘了打上去
    as
    只是函数这样:function(bool p)
    {
       if (p == "")
           .Parameters["@参数"].Value=null;
       else
           .Parameters["@参数"].Value=p;
    }
    传过来的实参是没有办法为""(空字符)的!