插入后,存储过程选择返回null

时间:2018-06-15 19:07:35

标签: mysql

我有3个名为tipo_produto& amp; tipo_veiculo和tipo_produto_veiculo

Basicaly,一个名为addTipo_produto的过程,它将值插入tipo_produto,然后选择tipo_produto来获取值匹配的最后一个ID,但它返回null,这是不可能的,因为我刚才添加了值

DELIMITER //
Create procedure addTipo_produto(
    IN p_tipo_produto varchar(50),
    IN p_tipo_veiculo varchar(50)
)
begin
DECLARE id_tipo_veiculo INT; 
DECLARE id_tipo_produto INT; 
INSERT INTO `tipo_produto`(`tipo_produto`) VALUES(p_tipo_produto);
SELECT `id_tipo_veiculo` INTO id_tipo_veiculo FROM `tipo_veiculo` WHERE `tipo_veiculo` LIKE p_tipo_veiculo;
SELECT `id_tipo_produto` INTO id_tipo_produto FROM `tipo_produto` WHERE `tipo_produto` LIKE p_tipo_produto;
INSERT INTO `tipo_produto_veiculo`(`id_tipo_produto`, `id_tipo_veiculo`) VALUES((SELECT(id_tipo_produto)), (SELECT(id_tipo_veiculo)));

end//
DELIMITER ;

整个代码: https://pastebin.com/0qWgtusK

固定代码:

DELIMITER //
Create procedure addTipo_produto(
    IN p_tipo_produto varchar(50),
    IN p_tipo_veiculo varchar(50)
)
begin
DECLARE _id_tipo_veiculo INT; 
DECLARE _id_tipo_produto INT; 
INSERT INTO `tipo_produto`(`tipo_produto`) VALUES(p_tipo_produto);
SET _id_tipo_veiculo = (SELECT `id_tipo_veiculo` FROM `tipo_veiculo` WHERE `tipo_veiculo` LIKE p_tipo_veiculo);
SELECT `id_tipo_produto` INTO _id_tipo_produto FROM `tipo_produto` WHERE `tipo_produto` LIKE p_tipo_produto;
INSERT INTO `tipo_produto_veiculo`(`id_tipo_produto`, `id_tipo_veiculo`) VALUES(_id_tipo_produto, _id_tipo_veiculo);

end//
DELIMITER ;

谢谢大家

1 个答案:

答案 0 :(得分:0)

我更改了一行,因为只有insert语句用于tipo_produto表。 希望休息可以由你完成。

DELIMITER //
Create procedure addTipo_produto(
    IN p_tipo_produto varchar(50),
    IN p_tipo_veiculo varchar(50)
)
begin
DECLARE id_tipo_veiculo INT; 
DECLARE id_tipo_produto INT; 
INSERT INTO `tipo_produto`(`tipo_produto`) VALUES(p_tipo_produto);
SELECT LAST_INSERT_ID() INTO id_tipo_veiculo;
SELECT `id_tipo_produto` INTO id_tipo_produto FROM `tipo_produto` WHERE `tipo_produto` LIKE p_tipo_produto;
INSERT INTO `tipo_produto_veiculo`(`id_tipo_produto`, `id_tipo_veiculo`) VALUES(id_tipo_produto, id_tipo_veiculo);

end//
DELIMITER ;