Есть ряд проблем с вашим SQL. Но во-первых, способ их отладки - это напечатать SQL, не выполняя его, затем его нормальный SQL, и вы легко сможете определить, что с ним не так.
- SQL, составляющее представление.
- Вы должны заключать строки в кавычки как обычно, что означает удвоение кавычек в динамической c строке.
- Используйте
quotename
снова как предложено в комментариях. - Нет необходимости передавать параметр
@First3Digits
в sp_executesql
, потому что к этому моменту вы уже использовали его значение - что вам необходимо сделать, если вы создаете представление.
set @Sql = 'create view dbo.' + quotename(@First3Digits)
+ ' as'
+ ' select SubjectName'
+ ' from dbo.Subjects'
+ ' where SubjectName like ''' + @First3Digits + ''' + ''%'';';
-- This is how you debug dynamic SQL
print(@Sql);
execute sp_executesql @Sql;
Примечание: как я уже упоминал в вашем предыдущем вопросе, с предоставленной информацией это кажется действительно плохим дизайном. Почти наверняка есть лучший способ решить вашу большую проблему с изображением. Как прокомментировал Мартин Смит, стоит изучить встроенную табличную функцию .