应该不错,如不行将begin...end插进去.
另外请问,是.

解决方案 »

  1.   

    case ... when ... then ...else .... end查下帮助
      

  2.   

    ALTER PROCEDURE update_online
    @id int,@name varchar(20),@ip varchar(20),@ip1 varchar(20),@where varchar(100),
    @url varchar(100),@ie varchar(50),@os varchar(50),@ys bit
    as
    if @id is null
    begin
    if (select count(id) from online where name=@name)>0
    update count set ip=@ip,ip1=@ip1,where=@where,url=@url,ie=@ie,os=@os,ys=@ys where name=@name
    else
    exec insert_online
    end
    else
    begin
    if (select count(id) from online where name=@name)=0 or @name='游客'
    update count set name=@name,ip=@ip,ip1=@ip1,where=@where,url=@url,ie=@ie,os=@os,ys=@ys where id=@id
    else
    update count set ip=@ip,ip1=@ip1,where=@where,url=@url,ys=@ys
    end
    麻烦帮我看一下,总是提示我WHERE附近有语法错误.
      

  3.   

    ALTER PROCEDURE update_online
    @id int,@name varchar(20),@ip varchar(20),@ip1 varchar(20),@where varchar(100),
    @url varchar(100),@ie varchar(50),@os varchar(50),@ys bit,@i int
    as
    if @id is null
    begin
    if (select count(id) from online where name=@name)>0
    exec('update count set ip='+@ip+',ip1='+@ip1+',where='+@where+',url='+@url+',ie='+@ie+',os='+@os+',ys='+@ys+' where name='+@name)
    else
    exec insert_online
    end
    else
    begin
    if (select count(id) from online where name=@name)=0 or @name='游客'
    exec('update count set name='+@name+',ip='+@ip+',ip1='+@ip1+',where='+@where+',url='+@url+',ie='+@ie+',os='+@os+',ys='+@ys+' where id='+@i)
    else
    exec('update count set ip='+@ip+',ip1='+@ip1+',where='+@where+',url='+@url+',ys='+@ys)
    end