CREATE PROCEDURE GET_ID (@fname nvarchar(20),@id int output)
AS
begin
declare @i int
declare @idesc int
declare @u nvarchar(20)
declare @s nvarchar(4000)
set @idesc=1
set @u=N''
set @s=N'select @i=count(bh) from '+@fname
exec sp_executesql @s,N'@i int out',@i out
IF EXISTS(SELECT name FROM sysindexes WHERE name = 'bh_index')
exec('DROP INDEX '+@fname+'.bh_index')
exec('CREATE INDEX bh_index ON '+@fname+' (bh)')
while @i<>0
begin
set @s='select DISTINCT top 1 @u=bh from @fname where bh=@idesc'
exec sp_executesql @s,N'@u int out,@idesc int',@u out,@idesc
if @@rowcount=0
begin
set @id=@idesc
return
end
set @i=@i-1
set @idesc=@idesc+1
end
set @id=@idesc
end
GO
AS
begin
declare @i int
declare @idesc int
declare @u nvarchar(20)
declare @s nvarchar(4000)
set @idesc=1
set @u=N''
set @s=N'select @i=count(bh) from '+@fname
exec sp_executesql @s,N'@i int out',@i out
IF EXISTS(SELECT name FROM sysindexes WHERE name = 'bh_index')
exec('DROP INDEX '+@fname+'.bh_index')
exec('CREATE INDEX bh_index ON '+@fname+' (bh)')
while @i<>0
begin
set @s='select DISTINCT top 1 @u=bh from @fname where bh=@idesc'
exec sp_executesql @s,N'@u int out,@idesc int',@u out,@idesc
if @@rowcount=0
begin
set @id=@idesc
return
end
set @i=@i-1
set @idesc=@idesc+1
end
set @id=@idesc
end
GO
解决方案 »
- 根据字段排序的问题
- 请问类似错位效果的SELECT语句该如何实现?
- 弱弱的问一句:什么是trigger?
- 您好。我重装了系统。我还原SQL。数据库。但是我打开软件。他说连接不上。请问一下要如何做才可以连接上数据库
- 我的数据库处于In Recovery 的状态
- 关于向触发器赋值
- 请问SQL命令中除了Insert以外,还有别的添加记录的命令吗?我有一近百个字段的表间要复制记录,两个表结构完全相同,除了逐个字段地写Ins
- 关于实现sql数据库备份的问题
- 怎样使我的存储过程自动运行?
- 通过变量表返回记录集为什么不可以呢
- 高手们,对于这样的SQL语句,请问大家有什么好的改进方法啊?
- 删除复制后出现的问题?
set @s=N'select @i=count(bh) from '+@fname 这里提示必须定义FNAME变量,奇怪
谢谢