Is it possible to create a stored procedure that uses a parameter in the FROM
clause?
For example:
CREATE PROCEDURE [dbo].[GetMaxId]
@id varchar(50)
@table varchar(50)
AS
BEGIN
SELECT MAX(@id)
FROM @table
END
Is it possible to create a stored procedure that uses a parameter in the FROM
clause?
For example:
CREATE PROCEDURE [dbo].[GetMaxId]
@id varchar(50)
@table varchar(50)
AS
BEGIN
SELECT MAX(@id)
FROM @table
END
You cannot pass identifiers as parameters into a query (neither table names nor column names). The solution is to use dynamic SQL. Your syntax suggests SQL Server, so this would look like:
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