パート1: Erland Sommarskogの記事「T-SQLの動的検索条件... SQL 2005以前」では、 sp_executesqlで動的SQLを使用する方法動的SQL、sp_executesql、および動的SQL文の再構築 - パート1
http://www.sommarskog.se/dyn-search-2005.html#sp_executesql
SELECT @sql = -- 19
'SELECT o.OrderID, o.OrderDate, od.UnitPrice, od.Quantity, -- 20
c.CustomerID, c.CompanyName, c.Address, c.City, -- 21
c.Region, c.PostalCode, c.Country, c.Phone, -- 22
p.ProductID, p.ProductName, p.UnitsInStock, -- 23
p.UnitsOnOrder -- 24
FROM dbo.Orders o -- 25
JOIN dbo.[Order Details] od ON o.OrderID = od.OrderID -- 26
JOIN dbo.Customers c ON o.CustomerID = c.CustomerID -- 27
JOIN dbo.Products p ON p.ProductID = od.ProductID -- 28
WHERE 1 = 1' -- 29
-- 30
IF @orderid IS NOT NULL -- 31
SELECT @sql = @sql + ' AND o.OrderID = @xorderid' + -- 32
' AND od.OrderID = @xorderid' -- 33
-- 34
IF @fromdate IS NOT NULL -- 35
SELECT @sql = @sql + ' AND o.OrderDate >= @xfromdate' -- 36
など...だから
、あなたは動的SQL文を構築するとして、あなたの@sql
変数のひとつにsp_executesqlを実行する必要がある場合、それは理にかなっています。
ただし、@sql
を作成し、返されたフィルタリングされたレコードを返したとしますが、返されたレコードのCOUNT
も欲しいとします。
これを行う最善の方法は何でしょうか?
あなたの代わりにSELECT col1, col2, col3
のSELECT COUNT(*)...
を行うだろう@sql_2
でSELECT
声明を除いて、そのビルド@sql
にほぼ同一である別の変数、@sql_2
を宣言する必要がありますか?
これ以上のアプローチがありますか?
あなたがレコードを返却しているので、再審後にカウントするのはなぜですか? –