我正在尝试运行以下动态SQL语句:
@ TBl,@ Fld和@LookupValue都已根据表格进行搜索,字段(或列)搜索和列值进行比较。
DECLARE @Sql AS VARCHAR(500)
SET @Sql = 'SELECT COUNT(*)
FROM ' + @Tbl +
' WITH (NOLOCK)
WHERE ' + @Fld + ' = ''' + @LookupValue + ''''
EXEC(@Sql)
我想将结果存储到变量中,以便检查是否有任何返回的行。该语句位于WHILE构造的中间,该构造正在检查多个表和字段。
如果找到记录,那么我想显示:
SET @Sql = 'SELECT ' + @Fld +
' FROM ' + @Tbl +
' WITH (NOLOCK)
WHERE ' + @Fld + ' = ''' + @LookupValue + ''''
EXEC(@Sql)
答案 0 :(得分:2)
是的,您可以将其存储在类型变量中并使用{/ 1}}之类的
sp_executesql
答案 1 :(得分:0)
您可以创建临时表并存储计数值。
if object_id('tempdb.#mycount') is null
create table #mycount ( countVal int);
DECLARE @Sql AS VARCHAR(500)
SET @Sql = 'INSERT INTO #mycount
SELECT COUNT(*)
FROM ' + @Tbl +
' WITH (NOLOCK)
WHERE ' + @Fld + ' = ''' + @LookupValue + ''''
EXEC(@Sql)
select countVal from #mycount
-- once the temp table usage is done, you can delete it
drop table #mycount