我需要此查询的帮助,该查询对我不起作用,也不知道为什么,找不到错误。
-- --------------------------------------------------------------------------------
-- 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
有了这个代码,它给了我名字/名字和姓氏/ Apellido Wheather,它是否具有正确的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。
请帮助我,谢谢。
最佳答案
在声明中
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 ;
关于mysql - MySQL简单查询错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23017243/