我要求在存储过程中实现此要求。动态查询数据库以获取表的计数,将其存储在t-sql变量中,然后根据该变量做出一些决定。
这是我正在处理的存储过程。这会引发一些错误,因为我认为没有一种简单的方法可以将tsql动态查询的结果分配给变量。
CREATE PROCEDURE test
AS
BEGIN
DECLARE @sql VARCHAR(255)
DECLARE @cnt int
SET @sql = 'SELECT COUNT(1) FROM myTable'
SET @cnt = EXEC(@sql)
IF (@cnt > 0)
PRINT 'A'
ELSE
PRINT 'B'
END
GO
有人能告诉我是否有更简单的方法可以使用T-SQL实现这一目标吗?
感谢。
答案 0 :(得分:6)
替代:
declare @tablename varchar(512) = 'sometable'
declare @sql nvarchar(512) = 'set @count = (select count(*) from ' + @tablename + ')'
declare @count int
execute sp_executesql @sql, N'@count int output', @count=@count output
select case when @count > 0 then 'A' else 'B' end
答案 1 :(得分:0)
试试这个:
SET @sql = 'SELECT @cnt = COUNT(1) FROM myTable'
EXEC(@sql)