日期:2014-05-17  浏览次数:20486 次

SQL 存储过程 【大神来】
需求是这样:客户端传入“姓名”,
比如“张三”然后 一点提交按钮,就调用sql的存储过程。

存储过程需求:把张三 到Name表,做对比,看是否有,如果没有重复,往表Name里新增一条记录,

如果有,有几条,找出一个table(有可能是:张三1、张三2、张三3),

如果只有一条,则在原来的名字 加1,

如果有多条,找出最后一个“张三3”,

然后改成“张三4”往表Name里新增一条记录。 

大神们给个思路的存储过程,
1怎么判断取出查到的记录的最后一条,里面的name列的值?
2怎么新增到表里?
或者给一些参考资料。谢谢! 
SQL?存储过程?游标

------解决方案--------------------
ALTER procedure [dbo].[usercheckee]
(@infullname varchar(50), 
@outcheck char(3) OUTPUT)
as
begin
if object_id('tempdb..#tabletest') is not null --提示列名tempdb..#tabletest无效
drop table #tabletest  --如果临时表存在,删除临时表
if exists(select * from usra01  where A0101=@infullname)
begin--找出最大的张三,并分离出数字 并转化类型 再加1, 为了程序清晰,暂且放入临时表;
select cast(replace(max(A0101) ,@infullname,'')  as decimal(18,0))+1 as  num  
into #tabletest  
from usra01 where A0101 like @infullname --提示where附近语法错误
group by A0101
insert into usra01  (name)  select 'num'+@infullname    from #tabletest
--values附近语法错误
select @outcheck='yes'
end
else 
select @outcheck='no'
end
------解决方案--------------------
create table dbo.t
(name varchar(50))
go

create procedure t
@name varchar(50)
as
begin
    if not exists(select 1 from t where name=@name or ISNUMERIC(REPLACE(name,@name,''))=1)
    begin
        insert into t values(@name)
    end
    else
    begin
        if exists(select 1 from t where name=@name)
        begin
            update t set name=name+'1' where name=@name
            insert into t values(@name+'2')