powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Есть проблемка с процедурой
5 сообщений из 5, страница 1 из 1
Есть проблемка с процедурой
    #34188427
SHShadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал процедуру в SA 5.5
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
alter procedure "dba".FIND(in FString char( 256 ))
result(ColName char( 256 ),FindStr char( 256 ),ID integer)
begin
  select 'VIN',AUTOVIN,IDSALE into ColName,FindStr,
    ID from SALE_FULL_VIEW
    where AUTOVIN like FString;
  select 'Êëèåíò',KLIENT,IDSALE into ColName,FindStr,
    ID from SALE_FULL_VIEW
    where KLIENT like FString;
  select 'Íàèìåíîâàíèå âàëþòû',NAIMENOVANIEVALYTU,IDSALE into ColName,FindStr,
    ID from SALE_FULL_VIEW
    where NAIMENOVANIEVALYTU like FString;
  select 'Öåíà',PRICE,IDSALE into ColName,FindStr,
    ID from SALE_FULL_VIEW
    where PRICE like FString;
  select 'Äàòà ïðîäàæè',DATEOFSALE,IDSALE into ColName,FindStr,
    ID from SALE_FULL_VIEW
    where DATEOFSALE like FString;
  select 'Êëèåíò',KLIENT,IDSALE into ColName,FindStr,
    ID from SALE_FULL_VIEW
    where KLIENT like FString;
  select 'Ïîñòàâùèê',POSTNAIM,IDSALE into ColName,FindStr,
    ID from SALE_FULL_VIEW
    where POSTNAIM like FString;
  select 'Ïðîèçâîäèòåëü',PROIZNAIM,IDSALE into ColName,FindStr,
    ID from SALE_FULL_VIEW
    where PROIZNAIM like FString
end

однако результат поиска - результат последнего не нулевого запроса
в IB,FB для вывода я бы использовал SYSPEND между запросами.
Есть ли аналог такого оператора в Sybase SQL Anywhere
...
Рейтинг: 0 / 0
Есть проблемка с процедурой
    #34188458
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понятна логика ваших действий в процедуре.
Вы заполняете выходные параметры из разных колонок одного источника и естественно, что вам вернется последние ненулевые данные. Все правильно работает, как запрограммировали.
Что получить-то нужно?
Опишите кратко структуру источника данных SALE_FULL_VIEW, колонки, участвующие в запросах.
И что нужно на выходе получить в процедуре.
...
Рейтинг: 0 / 0
Есть проблемка с процедурой
    #34188492
SHShadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Процедура должна реализовывать поиск по всем столбцам таблицы и вывод результата поиска в воиде 2-х столбцов 1-название столбца 2-найденный результат, поэтому необхадимо чтобы выводился не результат последнего ненулевого запроса, а добавлялись результаты всех запросов в порядке исполнения.
А что работает как запрограммированно знаю, не знаю как реализовать добавление разультатов от каждого последующего запроса к результатам предыдущих.
SALE_FULL_VIEW:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
alter view
  "dba".SALE_FULL_VIEW(IDSALE,
  AUTOVIN,
  MARKAUTO,
  MODAUTO,
  KLIENT,
  NAIMENOVANIEVALYTU,
  PRICE,
  DATEOFSALE,
  POSTNAIM,
  PROIZNAIM)
  as select SALE.IDSALE,INFOAUTO.VIN as AUTOVIN,INFOAUTO.MARKAUTO,INFOAUTO.MODELAUTO as MODAUTO,INFOKLIENT.KLIENT,VALUTA.NAIMENOVANIEVALYTU,SALE.PRICE,SALE.DATEOFSALE,POSTAVCHIK.NAZVANIE as POSTNAIM,PROIZVODITEL.NAZVANIE as PROIZNAIM
    from "dba".POSTAVCHIK right outer join
    "dba".SALE on(POSTAVCHIK.ID_POSTAVCHIKA=SALE.ID_POSTAVCHIKA) left outer join
    "dba".PROIZVODITEL on(SALE.ID_PROIZVODITELIA=PROIZVODITEL.ID_PROIZVODITELIA) left outer join
    "dba".INFOAUTO on(SALE.VIN=INFOAUTO.VIN) left outer join
    "dba".INFOKLIENT on(SALE.KODKLIENTA=INFOKLIENT.KODKLIENTA) left outer join
    "dba".VALUTA on(SALE.KODVALYTU=VALUTA.KODVALYTU)
Таблица Sale:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE Sale
(                                  
IDSale                    INTEGER                 NOT NULL,
VIN          INTEGER                 NOT NULL,   
MarkAuto               CHAR( 100 )    NOT NULL,
ModelAuto            CHAR( 100 )    NOT NULL,
KodKlienta                INTEGER                 NOT NULL,
KodValytu               INTEGER                 NOT NULL,
Price                       DOUBLE   NOT NULL,
DateOfSale          CHAR( 100 )               NOT NULL,
ID_postavchika   INTEGER         NOT NULL,
ID_proizvoditelia INTEGER     NOT NULL ,
PRIMARY KEY(IDSale)
);
...
Рейтинг: 0 / 0
Есть проблемка с процедурой
    #34188511
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот теперь все ясно.
1) Используйте UNION для объединения результатов запросов.
2) или создайте временную таблицу, по очереди выполняйте запросы и заполняйте временную таблицу. В конце процедуры выборка из временной таблицы.
Второй способ лучше использовать, когда результат основан на сложной предварительной обработке данных. В вашем случае видимо достаточно UNION.
...
Рейтинг: 0 / 0
Есть проблемка с процедурой
    #34188572
SHShadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибки.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Есть проблемка с процедурой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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