0
FROM
句のパラメータを使用するストアドプロシージャを作成することはできますか?例えばFROM句のパラメータを含むストアドプロシージャ
:
CREATE PROCEDURE [dbo].[GetMaxId]
@id varchar(50)
@table varchar(50)
AS
BEGIN
SELECT MAX(@id)
FROM @table
END
FROM
句のパラメータを使用するストアドプロシージャを作成することはできますか?例えばFROM句のパラメータを含むストアドプロシージャ
:
CREATE PROCEDURE [dbo].[GetMaxId]
@id varchar(50)
@table varchar(50)
AS
BEGIN
SELECT MAX(@id)
FROM @table
END
クエリー(いずれもテーブル名やカラム名)にパラメータとして識別子を渡すことはできません。解決策は、動的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
ありがとうございました!それは速かった。 – Skylake
使用しているデータベースに質問を付けてください。 –
[テーブル名を変数として]重複している可能性があります(http://stackoverflow.com/questions/2838490/table-name-as-variable) –
これはSQL Serverです。私は誰かがそれをより短くするためにタイトルを修正したと思う。 – Skylake