2016-09-22 50 views
0

是否可以創建使用FROM子句中的參數的存儲過程?在FROM子句中使用參數的存儲過程

例如:

CREATE PROCEDURE [dbo].[GetMaxId] 
@id varchar(50) 
@table varchar(50) 
AS 
BEGIN 
SELECT MAX(@id) 
FROM @table 
END 
+0

請用您正在使用的數據庫標記您的問題。 –

+0

[表名作爲變量]可能的重複(http://stackoverflow.com/questions/2838490/table-name-as-variable) –

+0

它是SQL Server。我認爲有人修改了標題使其縮短。 – Skylake

回答

0

不能傳遞標識符作爲參數建立成一個查詢(均未表名也不列名)。解決方案是使用動態SQL。您的語法建議使用SQL Server,因此它看起來像這樣:

CREATE PROCEDURE [dbo].[GetMaxId] (
    @id varchar(50) 
    @table varchar(50) 
) 
AS 
BEGIN 
    DECLARE @sql NVARCHAR(MAX); 

    SET @sql = N'SELECT MAX(@id) FROM @table'; 
    SET @sql = REPLACE(REPLACE(@sql, '@id', QUOTENAME(@id)), '@table', QUOTENAME(@table)); 

    EXEC sp_executesql @sql; 
END; -- GetMaxId 
+0

謝謝!那很快。 – Skylake

相關問題