第一我 select 只是为了确认这个记录是否在表中,
如果存在的话,就第二次 select 赋值。eg:if exists (select * from mytable where ui_name=@name)
   begin
      select @id=ui_id from mytable where ui_name=@name
      return 
   end
else
   return 
这个,是否效率有问题?
谢谢回复。

解决方案 »

  1.   

    没有记录时,返回的如果不给定特殊的值,仍旧返回NULL,可以不用作判断。直接用:
    select @id=ui_id from mytable where ui_name=@name
    当然也可以这样:
    set @id=(select top 1 ui_id from mytable where ui_name=@name)
    如果需要给默认值,可以:
    set @id=isnull((select top 1 ui_id from mytable where ui_name=@name),'值')
      

  2.   

    如果需要给默认值,可以:
    set @id=isnull((select top 1 ui_id from mytable where ui_name=@name),'值')
    --------
    --------这个倒是不错。我测试下。谢谢。但我如果 直接用:
    select @id=ui_id from mytable where ui_name=@name
    如果记录不存在的话,会弹出个msgbx。这个是不能接受的。
    所以,我才select两次。
      

  3.   

    select @id=ISNULL(ui_id,'无对应记录') from mytable where ui_name=@name
      

  4.   

    set @id =isnull(sql语句, 'null替代之')