【发布时间】:2014-06-02 02:08:14
【问题描述】:
请看下面的SQL代码:
declare @Classification as varchar(5)
set @Classification =''
declare @ClassificationSQL as nvarchar(4000)
set @ClassificationSQL=''
declare @cnt int
declare @counts int
DECLARE NicheDeletionOffenderCursor CURSOR FOR
select classification from dbnicheoffenderclassificationlookup
Open NicheDeletionOffenderCursor
FETCH NEXT FROM NicheDeletionOffenderCursor INTO @Classification
WHILE @@FETCH_STATUS = 0
BEGIN
If @ClassificationSQL=''
set @ClassificationSQL='classification like ' + char(39) + '%' + @Classification + '%' + char(39)
else
set @ClassificationSQL=@ClassificationSQL + ' OR classification like ' + char(39) + '%' + @Classification + '%' + char(39)
FETCH NEXT FROM NicheDeletionOffenderCursor INTO @Classification
END
CLOSE NicheDeletionOffenderCursor
DEALLOCATE NicheDeletionOffenderCursor
SET @ClassificationSQL = 'select count(*) as cnt from person where id=903 and (' + @ClassificationSQL + ')'
EXECUTE sp_executesql @ClassificationSQL, N'@cnt int OUTPUT', @cnt=@Counts OUTPUT
如何将 @ClassificationSQL 的计数输出分配给一个变量以在 TSQL 的下一部分中使用?
【问题讨论】:
-
呃,
SELECT @cnt = count(*) from person...这里有各种各样的问题。为什么不dbo.person?为什么是@cnt和@counts?为什么案件不同?为什么倒数第二行没有N前缀? -
我是动态 sql 的新手。我从以下问题中借用了一些代码:stackoverflow.com/questions/3840730/…。我可能完全错了。
标签: sql sql-server tsql