gpt4 book ai didi

mysql - 即使查询传递值,INSERT 查询结果的过程也不会插入任何内容

转载 作者:行者123 更新时间:2023-11-29 09:33:43 25 4
gpt4 key购买 nike

查询将值分配给@suppliertaxid@FT_totalvalue@FT_taxablevalue,但未将它们分配给supplytaxid, ft_totalvalueft_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

没有错误信息,只是不插入结果并且表没有字段限制

最佳答案

由于 in_suppliertaxid 是一个字符串,因此您需要在它周围加上引号。

但是,您可以设置 session 变量并在 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 BYORDER 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)');

关于mysql - 即使查询传递值,INSERT 查询结果的过程也不会插入任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58146640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com