![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;