Как я выбираю из хранимой процедуры в Sybase?

Если Вы хотите избежать путаницы оператора выбора, находящегося в Вашем запросе дважды, можно хотеть поместить его в Пользовательскую Функцию.

Извините, но SQL Server не представил бы набор данных перед Группой пунктом, таким образом, псевдоним столбца не доступен. Вы могли использовать его в Порядке.

6
задан Community 23 May 2017 в 12:22
поделиться

4 ответа

Вам нужно будет попросить администратора базы данных изменить хранимую процедуру.

Вы можете изменить ее, чтобы выбрать результаты во временную таблицу оценки, а не в простой выбор, и затем вы можете написать свой собственный выбор в этой временной таблице, чтобы возвращать только нужные строки

2
ответ дан 8 December 2019 в 18:39
поделиться

Насколько мне известно, в Sybase ASE это невозможно. Даже использование

insert #temp_table
exec my_procedure

не работает (по крайней мере, на sybase 12.x).

2
ответ дан 8 December 2019 в 18:39
поделиться

Это возможно с ASE, но довольно окольным путем, используя Таблицы CIS и прокси. Этот механизм очень хорошо описан на сайте Роба Верчура:

http://www.sypron.nl/proctab.html

Я попробовал его однажды из любопытства, и он действительно работает. Я не стал вдаваться в сложный вопрос обработки ошибок.

pjjH

2
ответ дан 8 December 2019 в 18:39
поделиться

В Sybase IQ (не менее 12.6 и выше) вы можете выбирать из хранимой процедуры и фильтровать результаты, как если бы это была таблица. Я не знаю, работает ли это в ASE или ASA, но вы можете попробовать.

Итак, если ваша хранимая процедура называется myproc, в наборе результатов есть столбец ACTIVE, который может быть 0 или 1, и вы хотите выбрать только строки ACTIVE = 1 вы могли это сделать.

SELECT * FROM myproc () WHERE ACTIVE = 1

В IQ вы также можете использовать это как производную таблицу и СОЕДИНЯТЬ ее с другими таблицами, например, как эта .. .

ВЫБРАТЬ t1.name, t1.address, t2, active ОТ tbl_atable t1, (ВЫБРАТЬ * ИЗ myproc () ГДЕ АКТИВНЫЙ = 1) t2 WHERE t1.active = t2.active

... это довольно неплохо!

Я надеюсь, что это работает для любой версии Sybase, которую вы используете.

2
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: