刚学存储过程,希望各位大虾给个标准点的格式!多谢!Q1,表结构:Name       Num
-------    -------
AAA        145入参: Name varchar(20)1.如果Name已存在,则 Num + 1
2.如果Name不存在,则插入新记录,Num=1Q2, 表结构:
Today         MaxDay        TodayNum     MaxNum
----------    ----------    --------     --------
2006-12-23    2006-12-20    4656         45654入参: Daystr varchar(20)1.如果Daystr = Today ,则 TodayNum + 1  否则 Today = Daystr ,TodayNum=1
2.如果TodayNum > MaxNum ,则 MaxNum = TodayNum ,MaxDay = Today

解决方案 »

  1.   

    create proc p1(@Name varchar(20))
    as 
         declare @flag int
         
         select @flag = count(1) from Q1 where [name] = @Name
         if @flag > 0 
            update Q1 set Num = Num + 1 where  [name] = @Name
         else
            insert into Q1 values(@name,1)
    create proc p2(@Daystr varchar(20))
    as 
         declare @equ int
         
         select @equ = count(1) from Q2 where Today = @Daystr
         if @flag > 0 
            update Q2 set TodayNum = TodayNum + 1 where  Today = @Daystr
         else
            update Q2 set Today = Daystr ,TodayNum=1     update Q2 set MaxNum = TodayNum ,MaxDay = Today where TodayNum > MaxNum
      

  2.   

    create proc p2(@Daystr varchar(20))
    as 
         declare @equ int
         
         select @equ = count(1) from Q2 where Today = @Daystr
         if @flag > 0   ---   这里换成  @equ
            update Q2 set TodayNum = TodayNum + 1 where  Today = @Daystr
         else
            update Q2 set Today = Daystr ,TodayNum=1     update Q2 set MaxNum = TodayNum ,MaxDay = Today where TodayNum > MaxNum
      

  3.   


    create proc test_p @name varchar(20)
    as
    if exists(select 1 from Q1 where name=@name )
    begin 
    update Q1
    set num=num+1
    where name=@name
    end
    else 
    begin
    insert Q1 select @name,1
    end
      

  4.   

    if object_id('spTest1') is not null
        drop proc spTest1
    if object_id('spTest2') is not null
        drop proc spTest2
    GO
    ----第一个存储过程
    create proc spTest1 @Name varchar(20)
    as
    if exists(select 1 from Q1 where Name = @Name)
        update Q1 set Num = Num + 1 where Name = @Name
    else
        insert into Q1(Name,Num) values(@Name,1)
    GO
    ----第二个存储过程
    create proc spTest2 @Daystr varchar(20)
    as
    update Q2 set 
    TodayNum = case when Today = @Daystr then TodayNum + 1 else TodayNnum end,
    Today = case when Today = @Daystr then Today else @Daystr end,
    TodayNum = case when Today = @Daystr then TodayNum else 1 end
    update Q2 set MaxNum = TodayNum,MaxDay = Today where TodayNum > MaxNum
    GO
      

  5.   

    create proc test_p2 @Daystr varchar(20)
    as
    if exists(select 1 from Q2 where convert(varchar(10),today,120)=@Daystr)--today为datetime属性需要转换,不是可以用today=@Daystr
    begin
    update Q2
    set todaynum=todaynum+1
    where convert(varchar(10),today,120)=@Daystr
    end
    if not exists(select 1 from Q2 where convert(varchar(10),today,120)=@Daystr )
    begin
    insert Q2(Today,TodayNum) select @Daystr,1
    end
    update Q2
    set MaxNum = TodayNum,MaxDay = Today
    where TodayNum > MaxNum