Vâng, trước hết bạn đã bỏ qua dấu '+' khỏi chuỗi của mình. Cách làm này không lý tưởng lắm, nhưng bạn có thể làm được
DECLARE @SQL varchar(250)
SELECT @SQL = 'SELECT * FROM ' + QuoteName(@Alias)
Exec(@SQL)
Tuy nhiên, tôi thực sự khuyên bạn nên suy nghĩ lại cách bạn làm điều này. Việc tạo SQL động thường dẫn đến lỗ hổng SQL Injection cũng như làm cho SQL Server (và các DB khác) khó tìm ra cách tốt nhất để xử lý truy vấn của bạn. Nếu bạn có một thủ tục được lưu trữ có thể trả về bất kỳ bảng nào, bạn thực sự hầu như không nhận được lợi ích nào từ việc nó là một thủ tục được lưu trữ ngay từ đầu vì nó sẽ không thể làm được gì nhiều theo cách tối ưu hóa và bạn phần lớn cũng tính toán các lợi ích bảo mật.