Поскольку мне нужно отправить запрос с запросом по почте, есть определенные ограничения. 1. Он должен быть одним лайнером 2. он должен быть создан в tempdb, так как я собираюсь удалить его позже. , так как SQL-сервер принимает оператор CREATE VIEW только в новой строке. Я подаю в строку новые символы строки. здесь является утверждение:Создание представления в tempdb в SQL Server через запрос на отправку
DECLARE @NewLineChar AS CHAR(2) = CHAR(13) + CHAR(10); ('USE tempdb;' [email protected] + 'GO' [email protected] +'CREATE VIEW temp_view AS select name from sys.databases')
Этот запрос дает мне следующую ошибку:
Msg 102, Level 15, State 1. Incorrect syntax near 'USE tempdb;'. (Line 1)
что может быть проблема? Благодаря
редактировать: То же запрос работает, как этот
USE tempdb;
GO
CREATE VIEW temp_view AS select name from sys.databases
, где есть ошибка синтаксиса?
Почему бы не просто создать временную таблицу? –
Что именно вы пытаетесь сделать? Это похоже на то, что вы пытаетесь присвоить некоторый SQL переменной, но на самом деле у вас нет переменной, вы просто объединяете некоторые строки без 'SELECT' или' SET' .... Это похоже на проблему [xy] (http://meta.stackexchange.com/a/66378/179361). Я не могу придумать ни одной (хорошей) причины, по которой вам нужно будет генерировать представление «на лету». – GarethD
Мне не нужны данные. Мне просто нужно получить схему представления, которую я создаю, а затем я тоже отброшу представление. Заявление после «view AS» исходит от пользователя, который может быть любой, поэтому не хотите создавать таблицу, которая, возможно, заполнит tempdb – imran