CREATE PROCEDURE GetDataByRow
(
@SqlStr varchar(8000), --起始语句
@FirstRec int, --首条记录
@LastRec int --最后记录
)
AS
--一个字符型的随机数 结果放入临时表中,表名随机生成
SELECT @dt = substring( Convert( varchar,rand()), 3, 10 )
-- STUFF(原字符串 , 开始替换的位置 , 被替换的字符数 , 用于替换的字符串 )
select @SqlStr = stuff(@SqlStr,charindex('FROM',upper(@SqlStr)),6,' INTO tempdb..Soft'+@dt+ 'FROM '
exec(@SqlStr)
--为临时表增加ID号
SELECT @SqlStr = ' ALTER TABLE tempdb..Soft'+ @dt +' AND TEMPDB_ID numberic(10) IDENTITY PRIMARY KEY'
exec(@SqlStr)
--取记录号和起始行和结束行中间的记录
SELECT @SqlStr = ' SELECT * FROM tempdb..Soft' + @dt
+ ' WHERE TEMPDB_ID > ' + Convert(varchar,@FirstRec)
+ ' and TEMPDB_ID <= ' + Convert(varchar,@LastRec)
exec (@SqlStr)
--删除临时表
SELECT @SqlStr = ' DROP TABLE tempdb..Soft' + @dt
exec(@SqlStr)