求救:动态执行SQL的问题
表名动态变化
其中有一段流程是这样的:
1、在表中根据某个条件先判断记录是否存在
2、若存在再继续……
比如
declare @table varchar(20)
declare @sql varchar(200)
set @table= 'test1 '
set @sql= 'select * from '+@table+ ' where 条件表达式 '
如果是正常情况可以用:
if exists(select * from table where 条件表达式)
来判断记录是否存在
可是现在要执行这个动态语句,并判断是否有记录存在,该如何写呢?
因为 if exests(exec(@sql)) 是行不通的
求大侠指教
小弟刚刚接触TSQL编程
------解决方案--------------------把if exists也放到@sql裏面就可以了
------解决方案--------------------try
declare @table varchar(20)
declare @sql Nvarchar(200), @rowscount int
set @table= 'test1 '
set @sql= 'select @rowscount = Count(*) from '+@table+ ' where 条件表达式 '
EXEC sp_executesql @sql, N '@rowscount int Output ',@rowscount Output
IF(@rowscount > 0)
...
------解决方案--------------------可以一起动态
declare @table varchar(20)
--declare @sql varchar(200) 不要变量
set @table= 'test1 '
exec( '
if exists(select * from '+@table+ ' where 条件表达式)
begin
update '+@table+ ' set ... where 条件表达式
end
else
insert '+@table+ ' ...
')