我有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 ;
谢谢大家
答案 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 ;