在存储过程中,我想执行一个SQL语句,
select num from member where id=12345
如果存在这条记录则取出这条记录的NUM字段,不存在就插入一条新的记录,请教:类似于这个功能:sql = "select num from member where id=12345"
set rs = conn.execute(sql)
if not rs.eof then
 NUM = rs(0)
else
 sql = "insert into member (num) values (123456)"
 conn.execute(sql)
end if
rs.close
set rs = nothing我现在是在存储过程里执行这个过程,谢谢各位

解决方案 »

  1.   

    create proc pc
    @id int,
    @num output
    as
    if exists(select 1 from member where id=@id)
    select @num=num from  member where id=@id
    else
    insert member(num) values(@id)
      

  2.   

    --錯了, 改改create proc pc
    @id int,
    @num int output
    as
    if exists(select 1 from member where id=@id)
    select @num=num from  member where id=@id
    else
    insert member(num) values(@id)
      

  3.   

    create proc pc
    @id int,
    @num output
    as
    if (select count(*) from member where id=@id)>0
      begin  
      select @num=num from  member where id=@id
      end
    else
      begin
      insert member(num) values(@id)
      end
      

  4.   

    你表的结构都没有怎么写啊?那我就凭我的理解帮你看看吧~
    create proc spsel 
    as
    if exists(select num from member where id=12345)
    begin
    declare @a int
    select @a=num from member where id=12345
    end
    else
    insert into member(num) values(123456)
      

  5.   

    create table member(id int, num int)
    insert member select 12, 1
    insert member select 14, 2
    insert member select 20, 3
    go
    --
    create proc pc
    @id int,
    @num int output
    as
    if exists(select 1 from member where id=@id)
    select @num=num from  member where id=@id
    else
    insert member(num) values(@id)
    go
    --
    declare @num int
    exec pc 12, @num output
    select @num
    select * from member
    --
    declare @num int
    exec pc 100, @num output
    select @num
    select * from member
      

  6.   

    这里我再给这位仁兄说句:exists()
    表示括号中的查询如果能返回行,那么这条语句就返回ture
      

  7.   

    又有个新问题, Set MyComm = Server.CreateObject("ADODB.Command")
    MyComm.ActiveConnection = conn
    MyComm.CommandText = "SP_1212821"
    MyComm.CommandType = 4
    MyComm.Prepared = true
    MyComm.Parameters.Append MyComm.CreateParameter("@Mobile", 200, 1, 15)
    MyComm("@Mobile") = phoneid
    Set MyRst = MyComm.Execute
    MyRst.close
    set MyRst = nothing
    Set MyComm = nothing
    我如果只执行更新而不取出记录集的话CLOSE为什么报错呢?
    ADODB.Recordset 错误 '800a0e78' 对象关闭时,不允许操作。 /receive_mobile/1212821.asp,行 40
    MyRst.close-----这行