Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2018, 11:48   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
Вопрос Часть 1. Набор данных в селективной хранимой процедуре Firebird

Добрый день!
Решил я тут поизучать хранимые процедуры в Firebird, т.к. когда работал с этой СУБД последний раз, то до этого не доходил. А тут, хорошо изучив работу с хранимыми процедурами в MS SQL + я решил переписать проект на Firebird, то пока я разобрался с хранимыми процедурами в этой СУБД на уровне процедуры, которая в результате селекта получает одну запись, по передаваемым двум параметрам.
Теперь же мне надо, чтобы вернулся набор данных, из нескольких строк, если я в процедуру передаю параметры.
Вот, как создаю процедуру в IBExpert:
Код:
create procedure tets (p1 varchar(255))
returns (need_field_1 varchar(255), need_field_2 varchar(255))
as
 declare variable ss varchar(255);
begin
 for select tab_name.need_field_1, tab_name.need_field_2
    from tab_name
   where tab_name.need_field = :p1
    into :ss
 do
 begin
    need_field_1=:ss;
    suspend;
 end
end
Поскольку в базе в таблице tab_name всего 2 записи, тестовые, то я их и ожидаю получить, но, получают только одну запись.

Прошу помощи в понимании, как написать селективный запрос в хранимой процедуре в Firebird?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.12.2018, 12:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

SELECT * FROM test(параметр)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.12.2018, 12:15   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
SELECT * FROM test(параметр)
И все???
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.12.2018, 12:24   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А что не так? Ну там еще запрос в процедуре какой-то корявый - два поля возвращает в одну переменную
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.12.2018, 12:25   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А что не так? Ну там еще запрос в процедуре какой-то корявый - два поля возвращает в одну переменную
Так я понимаю, что корявый, говорю же, что "учусь" работать с ХП в Firebird.
Вот я и прошу подсказать, что не так у меня...
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 04.12.2018 в 12:28.
artemavd вне форума Ответить с цитированием
Старый 04.12.2018, 12:36   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
 for select tab_name.need_field_1, tab_name.need_field_2
    from tab_name
   where tab_name.need_field = :p1
    into :need_field_1,:need_field_2
 do
 begin
    suspend;
 end
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.12.2018, 12:40   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
 

create procedure tets (p1 varchar(255))
returns (need_field_1 varchar(255), need_field_2 varchar(255))
as
 declare variable ss varchar(255);
begin
for select tab_name.need_field_1, tab_name.need_field_2
    from tab_name
   where tab_name.need_field = :p1
    into :need_field_1,:need_field_2
 do
 begin
    suspend;
 end
end
Вот так?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.12.2018, 12:50   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

И ss не нужно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.12.2018, 16:45   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
И ss не нужно
Все, вроде разобрался!
Аватар, спасибо!
Вроде сделал и на вставку и на удаление даже.
Теперь буду изучать как работать с ХП из Delphi.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
not found при хранимой процедуре Voca БД в Delphi 1 19.06.2017 00:28
Передача параметров в хранимой процедуре Maxjuvefan БД в Delphi 7 17.09.2015 14:09
Имена переменных в хранимой процедуре Muramidaza БД в Delphi 0 17.03.2014 22:44
Insert or Update в хранимой процедуре Dozent SQL, базы данных 4 15.10.2013 03:17