動的テーブルを作成してデータを挿入するストアド プロシージャに動的 SQL があります。私の質問は、このクエリ プランがキャッシュされるかどうかです。
これは、ストアド プロシージャ内で動的 SQL を現在どのように構築しているかの簡単な例です。
CREATE PROCEDURE [dbo].[GetOrders]
@CustID AS INT
AS
BEGIN
DECLARE @SQL NVARCHAR(MAX)
DECLARE @TableName AS VARCHAR(500)
SET @TableName = CONVERT(VARCHAR(255), NEWID())
SET @SQL = 'CREATE TABLE [dbo].[' + @TableName + ']
(
[OrderID] [int] NOT NULL
) '
EXEC sp_executesql @SQL
SET @SQL = 'insert [dbo].[' + @TableName + '](OrderID)
select OrderID from dbo.Orders where CustomerID=@CustID'
EXEC sp_executesql @SQL, N'@CustID INT', @CustID = @CustID
END
GO