#sql #sql-server #tsql
#sql #sql-сервер #tsql
Вопрос:
Когда я выполняю этот скрипт, возникает синтаксическая ошибка. Что в этом плохого?
use TEST
go
CREATE TABLE newTagsTable
(
(SELECT TEST.dbo.dynamicTags.Alais
FROM TEST.dbo.dynamicTags
WHERE ID = 2) varchar(200)
);
Комментарии:
1. База данных, которую вы используете?
2. SQl Server 2008 R2
3. К вашему сведению, SQL Server 2008R2 не поддерживается уже более года, @SamraatRajput, вам действительно следует посмотреть на пути обновления.
4. Не публикуйте изображения кода и данных, @SamraatRajput . Поместите код и данные как
text
; это то, что есть в конце концов.5. Сторона, обратите внимание, что это действительно старая версия SSMS; Я предлагаю обновить до последней версии.
Ответ №1:
Это то, что вам нужно?
SELECT Alais
into newTagsTable
FROM dynamicTags
WHERE ID = 2;
Хорошо, тогда что-то вроде этого:
create procedure test_proc
as
declare @p_sql varchar(2000);
declare @p_sql_2 varchar(2000);
declare @getid CURSOR;
SET @getid = CURSOR FOR
SELECT Alais
FROM dynamicTags;
begin
set @p_sql = 'create table newTagsTable (';
OPEN @getid
FETCH NEXT
FROM @getid INTO @p_sql_2
WHILE @@FETCH_STATUS = 0
begin
set @p_sql = @p_sql @p_sql_2 ' varchar(20),'
FETCH NEXT FROM @getid INTO @p_sql_2
end;
set @p_sql = left(@p_sql, len(@p_sql)-1) ')';
EXEC (@p_sql);
end;
А затем просто выполните процедуру:
exec test_proc
Вы можете добавить к этому параметры, чтобы сделать его более удобным для других ситуаций…
Вот демонстрация для этого второго варианта:
Комментарии:
1. Привет @SamraatRajput, вы обратились за помощью здесь, и помощь была предоставлена. Минимум, что вы можете сделать, это поблагодарить и прокомментировать предоставленные ответы?