首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求救:动态执行SQL的有关问题

2012-02-01 
求救:动态执行SQL的问题表名动态变化其中有一段流程是这样的:1、在表中根据某个条件先判断记录是否存在2、若

求救:动态执行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+ ' ...
')


热点排行