有关存储过程中使用动态SQL的疑问, 请大家赐教, 谢谢!
--declare @aa varchar(200)
--select @aa='select * from member'
--exec( @aa )
--keyword sp
drop proc sp_keyword_search;
go
create proc sp_keyword_search
@offset int,
@pagesize int=20, --默认每页20条记录
@whereclause varchar(200)='1=1', -- default condiction
@orderclause varchar(200)='b.LevelId desc, b.BusinessName asc' -- default condiction
as
set nocount on
if @offset<@pagesize
set @offset=0
declare @sql varchar(300)
if @offset=0
begin
set rowcount @pagesize
select @sql='select * from business as b where ' + @whereclause+' order by '+ @orderclause
exec (@sql)
end
else
begin
declare @i int
set @i=@offset+@pagesize
set rowcount @i
select @sql='select businessId into #t from business as b where ' + @whereclause+' order by '+ @orderclause
exec( @sql)
set @i=@offset
set rowcount @i
delete from #t
select * from business a
where exists(
select * from #t where businessId=a.businessid)
end
set rowcount 0
go
调用 exec prc_keyword_search @offset=100; 出错
错误信息:
服务器: 消息 208,级别 16,状态 1,行 1
对象名 '#t' 无效。
服务器: 消息 208,级别 16,状态 1,过程 prc_keyword_search,行 40
对象名 '#t' 无效。
是什么原因?难道SP中的动态SQL不可以使用临时表吗?