Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Неужели я разучился читать?  [new]
Киселев Сергей
Member

Откуда:
Сообщений: 102
BOL :
 A table variable behaves like a local variable. It has a well-defined scope, which is the function, stored procedure, or batch in which it is declared. 

Within its scope, a table variable may be used like a regular table. It may be applied anywhere a table or table expression is used in SELECT, INSERT, UPDATE, and DELETE statements. However, table may not be used in the following statements:

INSERT INTO table_variable EXEC stored_procedure



declare @table table(temp1 varchar(20), temp2 varchar(20), PKTable_Name varchar(200),
PKCOLUMN_NAME varchar(200), temp3 varchar(20), temp4 varchar(20), FKTableName_Name varchar(50),
FLCOLUMN_NAME varchar(200), temp5 int, temp6 int, temp7 int, temp8 varchar(200), temp9 varchar(200), temp10 int)
insert into @table exec sp_fkeys

Вылетает :
Server: Msg 197, Level 15, State 1, Line 4
EXECUTE cannot be used as a source when inserting into a table variable.

Помогите, пожайлуста разобраться.
2 сен 03, 12:56    [323367]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Что не понятно-то ?

"However, table may not be used in the following statements:

INSERT INTO table_variable EXEC stored_procedure "
2 сен 03, 12:59    [323371]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
However, table may not be used in the following statements:

INSERT INTO table_variable EXEC stored_procedure
2 сен 03, 12:59    [323372]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
Slava
Member

Откуда: Сибирь, Новосибирск
Сообщений: 794
Точно, разучился!
2 сен 03, 13:01    [323374]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
Киселев Сергей
Member

Откуда:
Сообщений: 102
Ой, сорри. Пора очки покупать, а еще говорят, что монитор на зрение не влияет :). А не подскажете, пожайлуста, как реализовать вышесказанное или вообще мне необходимо сделать курсор в который поместить резултат выполнения хранимой процедуры sp_fkeys, и зачем тогда вообще нужна переменная типа table.
2 сен 03, 13:05    [323381]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А если #table?
2 сен 03, 13:14    [323403]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
Slava
Member

Откуда: Сибирь, Новосибирск
Сообщений: 794
Можно сделать процедуру, которая будет курсор возвращеть.
А table полезная штука. Рекомендуется применять везде вместо #table. Вобщем можно считать, что это ускоритель #table. Хотя если набор данных маленький они обе помещаются в памяти.
2 сен 03, 13:16    [323409]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
2 Киселев Сергей

можешь сказать sp_helptext sp_fkeys и обернуть это в курсор
2 сен 03, 13:18    [323412]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
Slava
Member

Откуда: Сибирь, Новосибирск
Сообщений: 794
Мне тоже очки нужны! sp_fkeys не заметил.
Думаю, что инфу о ключах можно из вьюх вытащить
2 сен 03, 13:18    [323413]     Ответить | Цитировать Сообщить модератору
 Re: Неужели я разучился читать?  [new]
Slava
Member

Откуда: Сибирь, Новосибирск
Сообщений: 794
в БД master есть INFORMATION_SCHEMA.KEY_COLUMN_USAGE.
Вызывать вот так надо
select * from [ВашаБД].INFORMATION_SCHEMA.KEY_COLUMN_USAGE
2 сен 03, 13:22    [323422]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить