gpt4 book ai didi

MySQL存储过程没有值检索

转载 作者:行者123 更新时间:2023-11-29 04:36:40 24 4
gpt4 key购买 nike

我已经将一个存储过程从 Sql Server 迁移到 Mysql,并且我创建了 phpmyadmin 例程,语法没问题,但是当我执行存储过程时,没有返回任何值。

DROP PROCEDURE `sp_buscar`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_buscar`(IN `@buscar` VARCHAR(50) CHARSET utf8) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER

SELECT idColono AS Folio, nombreColono as Nombre, CONCAT(apellidoP ,' ', apellidoM) as Apellido, CONCAT(domicilio,' ', numero) as Dirección, numeroTel AS Telefono
FROM cColonos
WHERE domicilio LIKE CONCAT (@buscar, '%')

在 Sql Server 中它可以正常工作。

CREATE PROC sp_buscar
@buscar VARCHAR(50)
AS
SELECT idColono AS Folio, nombreColono as Nombre, apellidoP +' '+ apellidoM as Apellido, domicilio+' '+ numero as Dirección, numeroTel AS Telefono
FROM cColonos
WHERE domicilio LIKE @buscar + '%'

怎么了?

最佳答案

尝试删除 concat 之后的空格:

SELECT idColono AS Folio, nombreColono as Nombre,
CONCAT(apellidoP ,' ', apellidoM) as Apellido,
CONCAT(domicilio,' ', numero) as Dirección,
numeroTel AS Telefono
FROM cColonos
WHERE domicilio LIKE CONCAT(@buscar, '%');

MySQL 对函数名后的空格有解析问题。

这个相当不寻常的限制实际上是 documented :

Note

By default, there must be no whitespace between a function name and the parenthesis following it. This helps the MySQL parser distinguish between function calls and references to tables or columns that happen to have the same name as a function. However, spaces around function arguments are permitted.

并且有一个允许空格的系统参数。

关于MySQL存储过程没有值检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39679120/

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