Моя хранимая процедура mysql row_count () внутри другой хранимой процедуры всегда возвращает ноль - PullRequest
0 голосов
/ 10 февраля 2019

Mysql ROW_COUNT () возвращает ноль, даже если обновление изменяет базу данных.У меня есть хранимая процедура A, которая вызывает другую хранимую процедуру B, которая имеет оператор обновления.Я также использовал set AUTOCOMMIT = 0 и запускаю транзакцию в хранимой процедуре A.

В процедуре A

DECLARE done INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR NOT FOUND 
SET done = 1;

DECLARE EXIT HANDLER FOR SQLEXCEPTION,sqlwarning
BEGIN

GET CURRENT DIAGNOSTICS CONDITION 1 errno = MYSQL_ERRNO, msg = MESSAGE_TEXT;
set Message = concat(errno , msg);
ROLLBACK;
END;    
set autocommit = 0 ;
start transaction;


call test_update(@Inv_Header_gid,@Message1);                                                                                        

select @Message1 into @out_SOINV_Msg;

if @out_SOINV_Msg <> 'SUCCESS' then

set Message = concat('Error On SOInvoice Update ',@out_SOINV_Msg);

rollback;

leave sp_DispatchProcess_Set;

end if;

if @out_SOINV_Msg = 'SUCCESS' then                                                                              

set Message = 'SUCCESS';

end if;

В процедуре B

declare Query_Updatee varchar(1000);
declare update_countt int;

set INV_Header_Gid = '999';
set  Query_Updatee= Concat('Update gal_mst_tdealerprice set dealerprice_status = ''no136jj''

where dealerprice_gid = ',INV_Header_Gid,'');



         set @Query_Updatee = Query_Updatee;

         PREPARE stmtr FROM @Query_Updatee;
         EXECUTE stmtr;  
         set update_countt =  (select ROW_COUNT());

         select found_rows();

         DEALLOCATE PREPARE stmtr;                     

         if update_countt > 0 then
            set Messagee = 'SUCCESS';
         else 
            set Messagee ='FAILZrtttt';
            select update_countt;
            rollback;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...