我們有一個允許用戶定義查詢的應用程式。我們想對任何可能的子查詢進行計數
例如
配置的 SQL - 作業正常:
DROP TABLE IF EXISTS TempData
EXEC [StoredPRoc]
Select * from TempSurpacData
然后我們嘗試對這個查詢進行計數,如下所示:
SELECT COUNT(*) FROM (
DROP TABLE IF EXISTS TempData
EXEC [StoredPRoc]
Select * from TempSurpacData
) tbl
不幸的是,這失敗了......
uj5u.com熱心網友回復:
DROP TABLE 和 EXEC 陳述句應該在 select 陳述句之外:
DROP TABLE IF EXISTS TempData
EXEC [StoredPRoc]
SELECT COUNT(*) FROM (
Select * from TempSurpacData
) tbl
或者
DROP TABLE IF EXISTS TempData
EXEC [StoredPRoc]
Select count(*) from TempSurpacData
如果你真的不能這樣做,你可以看看這篇文章
uj5u.com熱心網友回復:
你提供的資訊很少。
是什么 [StoredPRoc]?就像[StoredPRoc]還回傳一些結果并Select * from TempSurpacData回傳一些結果一樣,您需要計算哪個結果集。
我們確實確保用戶查詢在保存之前回傳行。
當你能做到這一點時,你肯定可以在同一個地方找到行數,只是我們不知道那里使用了什么代碼。
我無法控制的第一個查詢是用戶通過我們應用程式中的文本框輸入的
你這是什么意思?用戶是否只輸入DROP TABLE IF EXISTS TempData或您的完整示例。
這只是外行的例子。
declare @i varchar(500)='DROP TABLE IF EXISTS TempData
EXEC [StoredPRoc]
Select * from TempSurpacData'
exec(@i)
Select @@ROWCOUNT
假設在我的例子中,EXEC [StoredPRoc]然后Select * from TempSurpacData回傳行
Select @@ROWCOUNT
將給出回傳的行數 Select * from TempSurpacData
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363741.html
標籤:sql-server 查询语句 子查询
上一篇:SQLorderbyASCSecond(value)spaceASCFirst(value)在聚合SQL查詢中的同一列中
