SQL 存储过程 【大神来】
需求是这样:客户端传入“姓名”,
比如“张三”然后 一点提交按钮,就调用sql的存储过程。
存储过程需求:把张三 到Name表,做对比,看是否有,如果没有重复,往表Name里新增一条记录,
如果有,有几条,找出一个table(有可能是:张三1、张三2、张三3),
如果只有一条,则在原来的名字 加1,
如果有多条,找出最后一个“张三3”,
然后改成“张三4”往表Name里新增一条记录。
大神们给个思路的存储过程,
1怎么判断取出查到的记录的最后一条,里面的name列的值?
2怎么新增到表里?
或者给一些参考资料。谢谢!
------解决方案--------------------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')