我需要帮助这个查询,这对我不起作用,不知道为什么,找不到错误。
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `buscarchile`(dni int)
BEGIN
SELECT Nombre, Apellido FROM chile WHERE DNI = dni;
END
使用这段代码,它给了我名字/ Nombre和姓氏/ Apellido,它的dni是否正确。我也尝试过这种方式:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `buscarchile`(dni int)
BEGIN
SELECT Nombre, Apellido FROM chile WHERE DNI = @dni;
END
但是,如果我输入正确的dni或者它没有给我任何数据,就像它找不到任何有dni的人,但我知道有人有完全相同的dni。
请帮帮我,谢谢。
答案 0 :(得分:0)
声明
SELECT Nombre, Apellido FROM chile WHERE DNI = dni;
列名DNI
和变量名dni
之间存在名称冲突。
对变量或程序参数使用var_ColumnName
种做法是更好的做法。
无论是否维护此类实践,如果将参数读入局部变量并在SQL语句中使用相同的内容,则会更好。
像这样改变您的日常工作:
delimiter //
create
DEFINER=`root`@`localhost`
procedure `buscarchile`( dni int )
begin
declare var_DNI int = dni;
SELECT Nombre, Apellido FROM chile WHERE DNI = var_DNI;
end;
//
delimiter ;