Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / селек из процедуры / 16 сообщений из 16, страница 1 из 1
03.02.2011, 17:47
    #37096053
rastaman_sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
Привет всем.

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

Код: plaintext
1.
2.
3.
4.
select * from (
begin
//код процедыты
end
) as procedure1
...
Рейтинг: 0 / 0
03.02.2011, 17:55
    #37096070
rastaman_sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
у нас версия аса, и новый чел придумал так селектить, лично я так никогда не делал, вот поэтому и возник вопрос. :):):)
...
Рейтинг: 0 / 0
03.02.2011, 17:55
    #37096071
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
Использовать хранимую процедуру в FROM можно в SA и IQ. Нельзя в ASE.

Везде можно использовать подзапрос в FROM:
Код: plaintext
1.
2.
select t.*
from (select * from table where table.pk= 1 ) t
where t.f1= 2 
...
Рейтинг: 0 / 0
03.02.2011, 17:58
    #37096075
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
rastaman_sashaу нас версия аса, и новый чел придумал так селектить, лично я так никогда не делал, вот поэтому и возник вопрос. :):):)
В ASA это есть уже очень давно (кажется с 7-ой или 8-ой версии)
Код: plaintext
1.
2.
select t.* 
from (mysp 'param1', 'param2') as t
where t.f1= 123 
...
Рейтинг: 0 / 0
03.02.2011, 18:04
    #37096094
rastaman_sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
так я делаю, но вот именно такой вопрос когда бегин и энд стоит в скобках. ругается из за синтекса :) около бегин. вот и самому интересно стало можно ли так делать или нет. :):):)
...
Рейтинг: 0 / 0
03.02.2011, 23:00
    #37096563
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
rastaman_sashaПривет всем.

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

Код: plaintext
1.
2.
3.
4.
select * from (
begin
//код процедыты
end
) as procedure1

А вы сами как думаете, особенно, если обратимся к стандарту.
...
Рейтинг: 0 / 0
04.02.2011, 08:35
    #37096868
_Drive_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
White Owl,

В принципе можно и в ASE. Для этого нужно эту хранимую процедуру
прописать как прокси таблицу на свой-же сервер (local)
Но мы пробовали ... получается очень долго, т.к. на каждый
select создается новый connect.
...
Рейтинг: 0 / 0
04.02.2011, 09:22
    #37096951
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
On 04.02.2011 8:35, _Drive_ wrote:

> В принципе можно и в ASE. Для этого нужно эту хранимую процедуру
> прописать как прокси таблицу на свой-же сервер (local)

Можно да не нужно. И дело не в коннектах, а в том, что оптимизатору
очень мало что можно сделать с такой "таблицей" в запросе.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.02.2011, 10:11
    #37097072
_Drive_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
MasterZiv,

оптимизатор ... пусть оптимизирует процедуру
причем здесь запрос???
...
Рейтинг: 0 / 0
04.02.2011, 12:55
    #37097695
rastaman_sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
спасибо парни за инфу :)
...
Рейтинг: 0 / 0
04.02.2011, 15:45
    #37098188
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
On 04.02.2011 10:11, _Drive_ wrote:

> оптимизатор ... пусть оптимизирует процедуру
> причем здесь запрос???

Молодой ещё ... не понимает
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
07.02.2011, 11:01
    #37101665
_Drive_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
MasterZiv,

О молодости это Вы про оптимизатор?

Или Вы хотите сказать что если в процедуре есть select
который использует (какие-то) индексы и если ЭТУ
процедуру вызвать через select из прокси таблицы, то
индексы использоваться НЕ будут ???

Если Вы о том что на result set из этой процедуры
будут накладываться некие условия (в смысле WHERE), то
я догадывался, что в этом случае оптимизатор не будет задействован.
...
Рейтинг: 0 / 0
07.02.2011, 11:16
    #37101700
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
On 02/07/2011 11:01 AM, _Drive_ wrote:

> О молодости это Вы про оптимизатор?

Нет, о авторе стазанного. Т.е. о тебе.

>
> Или Вы хотите сказать что если в процедуре есть select
> который использует (какие-то) индексы и если ЭТУ
> процедуру вызвать через select из прокси таблицы, то
> индексы использоваться НЕ будут ???

Именно. Или ещё какая-то оптимизация не будет использована.

Если таблица явно стоит в запросе, оптимизатор всё про неё
знает. Если используется процедура, то для оптимизатора она --
чёрный ящик. Очень в огранниченных случаях эта технология
может применяться. Вообще, SQL и инкапсуляция данных (и их обработки)
где-то -- абсолютно несовместимые вещи.

> Если Вы о том что на result set из этой процедуры
> будут накладываться некие условия (в смысле WHERE), то
> я догадывался, что в этом случае оптимизатор не будет задействован.

Оптимизатор не может быть не задействован. Он строит план, всегда.
Но какой -- другой вопрос.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
07.02.2011, 12:12
    #37101873
_Drive_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
MasterZiv,

Да ... проэксперементировал ...
с начала не поверил ... время исполнения хр. проц-ры практически не изменилось
(в ней два insert во временные таблицы с агрегированием и потом select из одной из
них с join-ом в постоянные таблицы)
но посмотрел на планы запросы и .... получается что этот omni server какбы
"налету" анализирует текст хранимой процедуры
и пытается ее исполнить .. как бы в "пошаговом" режиме
и "планы" примерно такие
...
QUERY PLAN FOR STATEMENT 5 (at line 42).
STEP 1
The type of query is SELECT.
1 operator(s) under root
|ROOT:EMIT Operator (VA = 1)
|
| |SCALAR Operator (VA = 0)
...
QUERY PLAN FOR STATEMENT 23 (at line 82).
STEP 1
The type of query is COND.
4 operator(s) under root
|ROOT:EMIT Operator (VA = 4)
|
| |RESTRICT Operator (VA = 3)(0)(0)(0)(4)(0)
| |
| | |SCALAR AGGREGATE Operator (VA = 2)
| | | Evaluate Ungrouped COUNT AGGREGATE.
| | |
| | | |RESTRICT Operator (VA = 1)(3)(0)(0)(3)(0)
| | | |
| | | | |SCAN Operator (VA = 0)
| | | | | FROM TABLE
| | | | | sysobjects
| | | | | Index : ncsysobjects
| | | | | Forward Scan.
| | | | | Positioning at index start.
| | | | | Index contains all needed columns. Base table will not be read.
| | | | | Using I/O Size 8 Kbytes for index leaf pages.
| | | | | With LRU Buffer Replacement Strategy for index leaf pages.
и т.д.

а я предполагал что запрос на вызов хр. проц. посылается на remote сервер
там исполняется как "положено", а затем result set куда-то fetch-ится и
... предается обратно на вызывающий сервер

PS: не зря мы отказались от ТАКОГО использования хр. проц.
...
Рейтинг: 0 / 0
17.02.2011, 16:41
    #37122879
Stalker4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
White Owlrastaman_sashaу нас версия аса, и новый чел придумал так селектить, лично я так никогда не делал, вот поэтому и возник вопрос. :):):)
В ASA это есть уже очень давно (кажется с 7-ой или 8-ой версии)
Код: plaintext
1.
2.
select t.* 
from (mysp 'param1', 'param2') as t
where t.f1= 123 


Вы уверены, что ASA8 поддерживает такую возможность ?
...
Рейтинг: 0 / 0
17.02.2011, 17:10
    #37122959
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
селек из процедуры
17.02.2011 16:41, Stalker4 пишет:

> Вы уверены, что ASA8 поддерживает такую возможность ?

На самом деле эта фича с 9-й.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / селек из процедуры / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]