Я думаю, что вам может понадобиться изменить передачу значений и значения конкатенации.
из этого оператора необходимо удалить точку с запятой, так как она выдаст ошибку
SELECT @sql = 'SELECT COUNT(*) FROM ' + @ActualTableName + ';'
При передаче пустых значений необходимы дополнительные кавычки
SELECT @final = @sql + 'WHERE ' + @PassedColumnName + ' IS NULL OR ' + @PassedColumnName + '= '''''
Во время выполнения I полагаю, что вы хотели выполнить final вместо SQL
Я думаю, что ниже должен дать ваш вывод:
CREATE PROC [lnd].[Get_ANCNotullColumn]( @PassedTableName as NVarchar(255),@PassedColumnName AS
NVARCHAR(100))
AS
BEGIN
DECLARE @ActualTableName AS NVarchar(255)
SELECT @ActualTableName = QUOTENAME( TABLE_NAME )
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @PassedTableName
DECLARE @sql AS NVARCHAR(MAX)
SELECT @sql = 'SELECT COUNT(*) FROM ' + @ActualTableName + ' '
DECLARE @final AS NVARCHAR(MAX)
SELECT @final = @sql + 'WHERE ' + @PassedColumnName + ' IS NULL OR ' + @PassedColumnName + '='''''
EXEC(@final)
END