我在創建動態表並插入數據的存儲過程中有動態SQL。我的問題是,這個查詢計劃是否會被緩存。在存儲過程中緩存動態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 [email protected]'
EXEC sp_executesql @SQL, N'@CustID INT', @CustID = @CustID
END
GO
我不認爲它會緩存。另外,爲每個客戶創建一個新表格都是不明智的。 –