Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Mysql stored proc, записи в цикле [D7, XP]


Avil ©   (2011-03-15 12:59:00) 

Дорогие мастера, помогие с проблемой.

Стало быть весь мой опыт написания процедур остановился на firebird/IB, но недавно потребовалось написать клиент под mysql, для чего надо создать несколько хранимых процедур для выборки данных. И тут возникла такая проблема:

for select column from table into :out_column do suspend;

Как это написать на MySQL? Согласно документации необходимо создавать временные таблицы и работать с ними, но в общем виде мне не удалось найти примеров, только описание отдельных методов, которые участвуют в построении.


b z   (2011-03-15 15:31:00) [1]

Вродеж кэйс тоже есть тут...
select case column when 1 then 'yes' else 'no' end as result from table1


Avil   (2011-03-15 13:49:00) [2]

Спасибо, оно.


clickmaker   (2011-03-15 13:46:00) [3]

http://dev.mysql.com/doc/refman/5.0/en/cursors.html


Avil   (2011-03-15 13:40:00) [4]


> if exists (select * from table1 where column = 1)
>  set result = 'yes'
> else
>  set result = 'no'


>Операцию сравнения надо сделать для каждой записи table1.
Для каждой значит не хотя бы одна.
И ключевое слово suspend; как бы намекает, что производится добавления строки в результирующую таблицу.
Мне нужна таблица результатов, а не одна переменная с последним результатом.


clickmaker   (2011-03-15 13:17:00) [5]

if exists (select * from table1 where column = 1)
 set result = 'yes'
else
 set result = 'no'


Avil   (2011-03-15 13:13:00) [6]


>CREATE PROCEDURE `sp_MyProc`()
>BEGIN
>SELECT `column` FROM `table`;
>END;


Видимо придется в полной мере запрос сделать чтобы было понятно.


for
select column
from table1
into :v_column
do
begin
if (:v_column = 1) then
 result = 'yes'
else
 result = 'no';
suspend;
end


Операцию сравнения надо сделать для каждойзаписи table1.


clickmaker   (2011-03-15 13:04:00) [7]

> Как это написать на MySQL?

CREATE PROCEDURE `sp_MyProc`()
BEGIN
 SELECT `column` FROM `table`;
END;


Наверх

Титульная страница Поиск, карта сайта Написать письмо