Metrika

12 января 2011 г.

T-SQL: SELECT и EXEC

Иногда хочется манипулировать с данными, которые возвращает хранимая процедура, как с обычной таблицей, но вот так:
SELECT * FROM EXEC sp_temp
не работает.

Варианта 2:

1. Создать таблицу:
CREATE TABLE temp ( ... )
И потом выполнить INSERT:
INSERT INTO temp EXEC sp_temp
2. Воспользоваться  командой OPENROWSET:
SELECT * FROM OPENROWSET('SQLOLEDB','server_name';'user_name';'password','EXEC sp_temp') AS a
Здесь мне нужно было взять некоторые название таблиц с линкованного сервера и вставить их в таблицу, мне удобнее было воспользоваться OPENROWSET:
INSERT INTO _tables (name, server_id)
SELECT table_name, 1
FROM OPENROWSET('SQLOLEDB','server_name';'user_name';'password',
    'EXEC sp_tables_ex  @table_server = ''server_name'',  @table_catalog = ''db_name'',  @table_type = ''TABLE''') AS a
WHERE table_name LIKE '%daily_log%'
ORDER BY table_name

Комментариев нет :

Отправить комментарий