Процедура для вставки результата запроса ничего не вставляет даже при передаче значения запроса - PullRequest
0 голосов
/ 28 сентября 2019

Запрос присваивает значения @suppliertaxid, @FT_totalvalue, @FT_taxablevalue, но они не присваиваются supplytaxid, ft_totalvalue и ft_taxablevalue и / или записываются в таблицу с помощью INSERT

Пожалуйста, помогите!

CREATE DEFINER=`root`@`localhost` PROCEDURE `p_fill_totalfaturasporfornecedor`(in_tabelaefaturaaquisicoesFornecedor varchar(64)
, in_suppliertaxid varchar(20)
, in_tabelaMaioresAquisicoesFornecedor varchar(64))
BEGIN

    DECLARE suppliertaxid varchar(20);
    DECLARE FT_totalvalue decimal(13,2);
    DECLARE FT_taxablevalue decimal(13,2);
    DECLARE FT_VATvalue decimal(13,2);
    DECLARE NC_totalvalue decimal(13,2);
    DECLARE NC_taxablevalue decimal(13,2);
    DECLARE NC_VATvalue decimal(13,2);
    DECLARE totalvalue decimal(13,2);
    DECLARE taxablevalue decimal(13,2);
    DECLARE VATvalue decimal(13,2);
    DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING

    SET @v = concat('SELECT  suppliertaxid
                                , sum(totalvalue)
                                , sum(taxablevalue)
                                , sum(vatvalue) INTO @suppliertaxid, @FT_totalvalue, @FT_taxablevalue, @VATvalue 
                    FROM ',in_tabelaefaturaaquisicoesFornecedor,'
                    where invoicetype in (''FT'',''FR'',''FS'',''ND'',''VD'',''TV'',''OU'')
                    and invoicestatus like ''REGISTADA''
                    and suppliertaxid=',in_suppliertaxid,'
                    group by suppliertaxid  
                    order by sum(totalvalue) desc,  sum(taxablevalue) desc, sum(VATvalue) desc');

    PREPARE stm FROM @v;
    EXECUTE stm;
    DEALLOCATE PREPARE stm;

    set @insert_top_suppliers = concat('insert into ',in_tabelaMaioresAquisicoesFornecedor ,'(suppliertaxid
    , FT_totalvalue
    , FT_taxablevalue
    , FT_VATvalue
    , NC_totalvalue
    , NC_taxablevalue
    , NC_VATvalue
    , totalvalue
    , taxablevalue
    , VATvalue) 
    values
    (@suppliertaxid, @FT_totalvalue, @FT_taxablevalue, @FT_VATvalue,null,null,null,null,null,null');

    prepare stmt from @insert_top_suppliers;
    execute stmt;
    deallocate prepare stmt;

END

Нет сообщений об ошибках, просто не вставляется результат и таблица не имеет ограничений по полям

1 Ответ

1 голос
/ 28 сентября 2019

Поскольку in_suppliertaxid является строкой, вам нужно заключить ее в кавычки.

Но вместо этого вы можете установить переменную сеанса и обратиться к ней в SQL.

    SET @in_suppliertaxid = in_suppliertaxid;
    SET @v = concat('SELECT  suppliertaxid
                                , sum(totalvalue)
                                , sum(taxablevalue)
                                , sum(vatvalue) INTO @suppliertaxid, @FT_totalvalue, @FT_taxablevalue, @VATvalue 
                    FROM ',in_tabelaefaturaaquisicoesFornecedor,'
                    where invoicetype in (''FT'',''FR'',''FS'',''ND'',''VD'',''TV'',''OU'')
                    and invoicestatus like ''REGISTADA''
                    and suppliertaxid= @in_suppliertaxid');

Также нет необходимости в GROUP BY и ORDER BY.Вы группируете по тому же столбцу, который выбираете в предложении WHERE, поэтому будет только одна строка.

В запросе INSERT вы пропускаете ) вконец списка VALUES.

    SET @v = concat('SELECT  suppliertaxid
                                , sum(totalvalue)
                                , sum(taxablevalue)
                                , sum(vatvalue) INTO @suppliertaxid, @FT_totalvalue, @FT_taxablevalue, @VATvalue 
                    FROM ',in_tabelaefaturaaquisicoesFornecedor,'
                    where invoicetype in (''FT'',''FR'',''FS'',''ND'',''VD'',''TV'',''OU'')
                    and invoicestatus like ''REGISTADA''
                    and suppliertaxid=',in_suppliertaxid,'
                    group by suppliertaxid  
                    order by sum(totalvalue) desc,  sum(taxablevalue) desc, sum(VATvalue) desc');

    PREPARE stm FROM @v;
    EXECUTE stm;
    DEALLOCATE PREPARE stm;

    set @insert_top_suppliers = concat('insert into ',in_tabelaMaioresAquisicoesFornecedor ,'(suppliertaxid
    , FT_totalvalue
    , FT_taxablevalue
    , FT_VATvalue
    , NC_totalvalue
    , NC_taxablevalue
    , NC_VATvalue
    , totalvalue
    , taxablevalue
    , VATvalue) 
    values
    (@suppliertaxid, @FT_totalvalue, @FT_taxablevalue, @FT_VATvalue,null,null,null,null,null,null)');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...