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
