2014-03-12 28 views
0

條款我試圖做到這一點:使用可變全方位其中SQL

DECLARE @str varchar(max) 
    SET @str='BEGIN   
       SELECT count(*) FROM eCareMembers 
      END'   
    EXEC(@str) 
SET @cnt2=cast(@str as bigint) 
SELECT cast(@cnt2 as varchar(max)) as usercount, *.a from user a  

,但我得到的錯誤:Error converting data type varchar to bigint.

+0

@str包含查詢文本,不能轉換爲bigint – StanislavL

回答

0

我不上你特林做什麼都清楚,但如果你想執行一塊動態SQL和捕捉一些結果到變量中,你應該使用sp_executesql

declare @Cnt int; 
declare @sql nvarchar(max); 
set @sql = N'select @c = COUNT(*) from sys.objects'; 
exec sp_executesql @sql,N'@c int output',@Cnt output 

print @Cnt 

(對於我來說,打印83)。

0

我明白了。試試這個:

SELECT (SELECT count(*) FROM eCareMembers) as usercount, *.a from user a

+0

我想要的是存儲一個表的計數,但使用set @ str ='begin end'。不使用set @ str = select count(*)。然後使用該@str在其他選擇語句中顯示計數 – user3410589

+0

@ user3410589 - 我不完全清楚爲什麼這是以動態SQL的形式完成的,也不是你認爲* BEGIN' /'END'爲你做了什麼。你可以編輯你的問題,並嘗試多解釋一下(另外,你的問題標題提到了'WHERE'子句,但在主體中沒有標記,所以也指出了一些必要的編輯) –