临时表 不存在。。。。
ALTER PROCEDURE [dbo].[p_test]
@TableName nvarchar(50),--表名
@Top nvarchar(10),--数据行
@Fields nvarchar(4000) = '*',--字段名(全部字段为*)
@OrderField nvarchar(4000),--排序字段(必须!支持多字段)
@sqlWhere nvarchar(4000) = Null--条件语句(不用加where)
AS
BEGIN
Declare @sql nvarchar(4000);
Declare @sql2 nvarchar(4000);
Declare @Row nvarchar(20);
if (@Top<>'0')
set @Row = 'top ' + @Top
set @sql ='select top 1 ' + @Fields + ' into #temp1 from ' + @TableName + ' where '
set @sql2 = 'select ' + @Row + ' ' + @Fields + ' into #temp2 from ' + @TableName + ' where '
if (@SqlWhere<>'' or @sqlWhere<>NULL)
begin
set @sql = @sql + @sqlWhere + ' and'
set @sql2 = @sql2 + @sqlWhere + ' and'
end
set @sql = @sql + ' datalength(picpath) <> 0 '
set @sql2 = @sql2 + ' id not in(select id from #temp1) '
exec(@sql)
Exec(@sql2)
select * from #temp1 UNION ALL select * from #temp2
drop table #temp1
drop table #temp2
END
(1 行受影响)
消息 208,级别 16,状态 0,第 1 行
对象名 '#temp1' 无效。
消息 208,级别 16,状态 0,过程 p_test,第 29 行
对象名 '#temp1' 无效。
(1 行受影响)
求高手帮看看。。。。
SQL
[解决办法]
变成全局表:
set @sql ='select top 1 ' + @Fields + ' into ##temp1 from ' + @TableName + ' where '
set @sql2 = 'select ' + @Row + ' ' + @Fields + ' into ##temp2 from ' + @TableName + ' where '