2016-09-22 13 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

関連する問題