Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Вниз

MSSQL. OPENQUERY. Как linked_server := self ?   Найти похожие ветки 

 
12 ©   (2010-09-15 11:56) [0]

Нужно быстро переделать хранимки, возвращающие tabl,  чтоб можно было делать select из них.

т.е. есть
exec GetBLABLA1
вернет
с1 с2 с3
1  2  3
1  3  4

думаю, проще всего мне сделать
select * from OPENQUERY ( linked_server ,"exec GetBLABLA1" )

загвоздка linked_server
надо что-то типа аналога self, ведь сам себе сервер по-идее должен быть  linked, без явного указания. Или нет?

т.е. как то так хочу
select * from OPENQUERY ( self ,"exec GetBLABLA1" )) T1
join
(select * from OPENQUERY ( self ,"exec GetBLABLA2" )  T2
on T2.c1 =  T1.c1

on T2.c2 = T1.c1


 
12 ©   (2010-09-15 12:02) [1]


> on T2.c2 = T1.c1

второй раз лишнее, разумеется


 
Дмитрий Тимохов   (2010-09-15 12:38) [2]

Что-то я не понял. Как получить результат процедуры в таблицу?
Может так? (это пример)

create procedure a
as
begin
select 1
end
go

create table e (i int)
insert e exec a
select * from e


 
Дмитрий Тимохов   (2010-09-15 12:38) [3]

можно во временную таблицу


 
12 ©   (2010-09-15 12:49) [4]

нет
процедуры есть(22 шт). Их нельзя трогать.
Можно сделать копии, конечно, но это будет, наверное, неправильно

а OPENQUERY позволяет получить и так.
но sp_add_linked_server не каждый может запустить

вот и думаю: должен же сервер быть сам себе линкован или не должен?


 
Ega23 ©   (2010-09-15 12:52) [5]


> Может так? (это пример)


Так нельзя.

create table #xxx1 (c1 int, c2 int, c3 int)
insert into #xxx1 exec GetBLABLA1
create table #xxx2 (c1 int, c2 int, c3 int)
insert into #xxx2 exec GetBLABLA2

select T1.*, T2.*
from #xxx1 T1 join #xxx2 on T1.c2=T2.c1

drop table #xxx1
drop table #xxx2


Если данное безобразие в рамках ХП происходит, то временные таблицы дропнутся автоматом.


 
Ega23 ©   (2010-09-15 12:53) [6]


> а OPENQUERY позволяет получить и так.


Он медленный. Делай во временную таблицу, проверено.


 
Дмитрий Тимохов   (2010-09-15 13:05) [7]


> Ega23 ©   (15.09.10 12:52) [5]
>
>
> > Может так? (это пример)
>
>
> Так нельзя.


вообще не понятно о чем речь в вопросе.
я дал код, который работает.
вроде это автор и спрашивал - как работать в результатом процедуры как с таблицей.


 
Ega23 ©   (2010-09-15 13:09) [8]


> я дал код, который работает.


Дим, пардон, я не разглядел сразу.
select * from e
мне показалось, что это select из хранимки.


 
12 ©   (2010-09-15 13:30) [9]


> я дал код, который работает.
> create procedure a
> as
> begin
> select 1
> end
> go
>
> create table e (i int)
> insert e exec a
> select * from e

да я понял, но не

наверное, я что то не так думаю, изначально..


 
Дмитрий Тимохов   (2010-09-15 13:55) [10]


> наверное, я что то не так думаю, изначально..

видимо )
ты задачу лучше опиши


 
12 ©   (2010-09-15 15:41) [11]

да даже сказать не могу уже
спроектировано неверно, вероятнее всего, или надо автора из отпуска дождаться - пусть пояснит логику.

суть в том, что в oracle есть таблица, из нее надо достать distinct столбец, и пробежаться. И каждое значение подставить в sp на mssql
будет много таблиц в итоге.
их надо join и взять общую

или надо еще раз подумать :)


 
Дмитрий Тимохов   (2010-09-15 15:46) [12]

1. получаешь distinct значения во временную таблицу 1.
2. бежишь циклом (думаю, умеешь?)
3. для каждого значения из таблицы 1 выполняешь процедуру, результат во временную таблицу 2.
4. содержимое из 2 ДОБАВЛЯЕШЬ во временную таблицу 3.
5. очищаешь 2.
6. идешь на шаг 3.

результат - таблица 3


 
12 ©   (2010-09-15 15:59) [13]

да это понятно..
не нравится только. вот такое ощущение, что неправильно что-то

но спасибо, на крайняк так и сделаю


 
Дмитрий Тимохов   (2010-09-15 16:01) [14]

нормально это
от объемов, конечно, зависит.


 
Ega23 ©   (2010-09-15 16:09) [15]


> вот такое ощущение, что неправильно что-то


Решение как решение



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
15-1284644940
slayer90
2010-09-16 17:49
2010.12.26
Microsoft® SQL Server® 2008 Express


15-1284462862
{RASkov}
2010-09-14 15:14
2010.12.26
USB Flash не устанавливаются ОСью как положено


2-1285825330
И. Павел
2010-09-30 09:42
2010.12.26
Уничтожение формы при ее закрытии.


2-1285840973
Рома
2010-09-30 14:02
2010.12.26
idhttp


2-1286211551
denissoft
2010-10-04 20:59
2010.12.26
где скачать пример memory path–ера!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский