/ / Procedura składowana z parametrem w klauzuli FROM - sql, sql-server, parametry

Procedura przechowywana z parametrem w klauzuli FROM - sql, sql-server, parameters

Czy można utworzyć procedurę składowaną, która używa parametru w FROM klauzula?

Na przykład:

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

Odpowiedzi:

0 dla odpowiedzi № 1

Nie można przekazywać identyfikatorów jako parametrów do zapytania (ani nazw tabel, ani nazw kolumn). Rozwiązaniem jest użycie dynamicznego SQL. Twoja składnia sugeruje SQL Server, więc wyglądałoby to tak:

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