Как обновить строки временной таблицы в хранимой процедуре в MySQL - PullRequest
0 голосов
/ 20 апреля 2011

я написал хранимую процедуру (getAllInitializedContact ()) для получения данных из различных таблиц. GetAllInitializedContact ()

CREATE DEFINER=`root`@`192.168.1.15` PROCEDURE `getAllInitializedContactNext`()
BEGIN

 DROP TEMPORARY TABLE IF EXISTS temp_users;
 CREATE TEMPORARY TABLE temp_users (
                                SELECT

                                c.id as contactId,
                                c.first_name as contactName,
                                c.email_address as contactEmailAddress,
                                sl.id as subscriberListId,
                                sl.name as subscriberListName, 
                                sl.display_name as subscriberListDisplayName,
                                sl.from_email_address,<br/>
                                sl.opt_in_msg_subject as subject,
                                sl.opt_in_msg_content as content,
                                sl.opt_in_msg_signature as signature,
                                csl.identifier
                                FROM contact c

                                          INNER JOIN contact_subscriber_list csl ON csl.contact_id=c.id
                                          INNER JOIN subscriber_list sl ON sl.id=csl.sub_list_id
                                          INNER JOIN contact_sub_list_status csls ON csls.id=csl.status_id  where csls.description='initialized');
END

, но теперь я хочу обновить этот resultset.so я создаю временную таблицу (temp_users)и мне нужно сделать некоторые обновления для некоторого столбца во временной таблице (temp_users). но я не могу понять, как я могу перебрать это и обновить temp_table.i попытался использовать цикл while и не знаю, как он применяется (цикл while). могу ясделать это с помощью цикла while?и как я могу это применить? нужна помощь

приветKosala

1 Ответ

0 голосов
/ 20 апреля 2011

Не уверен, почему вы хотите использовать курсор для обновления строк в таблице tmp, когда вы можете просто обновить их - см. Следующий пример:

drop table if exists foo;
create table foo
(
foo_id int unsigned not null auto_increment primary key,
value int unsigned not null default 0
)
engine=innodb;

insert into foo (value) values (10),(20),(30);

drop procedure if exists bar;

delimiter #

create procedure bar()
begin

create temporary table tmp engine=memory select * from foo;

update tmp set value = value + 100;

select * from tmp;

drop temporary table if exists tmp;

end #

delimiter ;

call bar();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...