Bueno hola he hecho una serie de modificaciones con respecto a lo q me decia Islas y lo q me di cuenta al probarlo q no ejecutaba la funcion por eso decidi crearlo en un Proc Almacenado
Código sql:
Ver originalCREATE PROCEDURE GenerarId
(
@Id VARCHAR(50),
@Tabla VARCHAR(50),
@MAX INT = NULL OUTPUT
)
AS
BEGIN
DECLARE @SQL NVARCHAR(MAX) -- Variable para Ejecutar una Sentencia SQL
DECLARE @Param NVARCHAR(MAX) -- Variable para Mandar parametros a la Consulta
SET @Param = N'@ParamId INT OUTPUT' -- Variable a Enviar
SET @SQL = N'SELECT @ParamId = ISNULL(MAX(' + @Id + ') + 1,1)
FROM ' + @Tabla + ';'
EXECUTE SP_EXECUTESQL @SQL, @Param, @ParamId = @MAX OUTPUT;
SELECT @MAX;
END
-- Para Tomar el Valor Devuelto
DECLARE @MAX INT
EXEC GenerarId 'id','documento',@MAX output;
print @MAX;