Можно ли вставить в табличную переменную без определения схемы? - PullRequest
1 голос
/ 09 октября 2009

Можно ли вставить в табличную переменную без определения схемы?

Мне нужно сделать это как

Declare @tab1 as table

Insert into @tab1 select * from table2

Select * from @tab1

Я пробовал этот запрос, но получил ошибку.

Пожалуйста, помогите.

Ответы [ 3 ]

3 голосов
/ 09 октября 2009

Ошибка с этой строкой:

Объявите @ tab1 как таблицу

Неверный синтаксис рядом с таблицей.

но вы также допустили ошибку с вашей вставкой, которая должна быть:

select * into tab1
from table2

Насколько я знаю, вам нужно объявлять схему при использовании переменных таблицы, если вы не используете временные таблицы, это не сработает

select * into #tab1
from table2

См. MSDN

1 голос
/ 01 ноября 2009

Ошибка в первой строке

Сообщение 102, Уровень 15, Состояние 1, Строка 1 Неверный синтаксис рядом с таблицей.

Вместо Объявите @ tab1 как таблицу try

Объявить @ tab1 как таблицу (col1 varchar (100)), т.е. схема полной таблицы

, например

Объявить @ tab1 как таблицу (col1 VARCHAR (100))

Вставьте в @ tab1 выберите [Персона] из табличной информации

Выберите * из @ tab1

Вывод:

col1

1032 * хуг * а

0 голосов
/ 09 октября 2009

Это будет работать:

declare @tab table (BillID int)
insert into @tab
select top 10 BillID from tblBill
select * from @tab

Это не будет работать:

select top 10 BillID into @tab from tblBill
select * from @tab

Если вы хотите определить схему таблицы var на лету, вы можете использовать что-то вроде этого:

declare @str varchar(1000)
set @str = 'declare @tab table (BillID int) ' + 
'insert into @tab ' + 'select top 10 BillID from tblBill ' + 'select * from @tab '
exec(@str)

Кроме того, поищите ( sp_executesql ) на сайте Пинала Дейва, чтобы получить полезный совет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...