Как уже упоминалось в комментариях, это невозможно сделать так, как вы ожидаете.Однако есть более эффективный способ добиться этого путем запроса системных представлений.
CREATE FUNCTION getTableCount (@tableName VARCHAR(255))
RETURNS INT
AS
BEGIN
RETURN ( SELECT SUM(row_count) tableCount
FROM sys.dm_db_partition_stats p
JOIN sys.tables t ON p.object_id = t.object_id
WHERE index_id <= 1 --Just clustered index or heap
AND t.name = PARSENAME( @tableName, 1)
AND (t.schema_id = SCHEMA_ID(PARSENAME( @tableName, 2)) OR PARSENAME( @tableName, 2) IS NULL));
END
Теперь, если мы говорим об эффективных способах кодирования, мы могли бы просто преобразовать это в встроенную табличную функцию, котораябудет работать в несколько раз быстрее.
CREATE FUNCTION getTableCount (@tableName VARCHAR(255))
RETURNS TABLE
AS
RETURN SELECT SUM(row_count) TableCount
FROM sys.dm_db_partition_stats p
JOIN sys.tables t ON p.object_id = t.object_id
WHERE index_id <= 1 --Just clustered index or heap
AND t.name = PARSENAME( @tableName, 1)
AND (t.schema_id = SCHEMA_ID(PARSENAME( @tableName, 2)) OR PARSENAME( @tableName, 2) IS NULL);