gpt4 book ai didi

mysql - 如何在mysql的过程中为其中传递值

转载 作者:行者123 更新时间:2023-11-29 13:00:25 25 4
gpt4 key购买 nike

DELIMITER //

DROP PROCEDURE IF EXISTS salary_ref//# MySQL returned an empty result set (i.e. zero rows).
# MySQL returned an empty result set (i.e. zero rows).

CREATE PROCEDURE salary_ref(con int(11),IN id varchar(120),maxval int(11),minval int(11) , taxo int(11))
BEGIN
DECLARE s VARCHAR(50);
IF con = 1 THEN
SELECT `i` . * , `taxo`.`id` , `t`.`item_id` AS id, `u`.`name` AS user_name, `t`.`value` AS val
FROM (
`taxonomy` AS taxo
)
JOIN `item_taxo` AS t ON `t`.`taxo_id` = `taxo`.`id`
INNER JOIN `items` AS i ON `i`.`id` = `t`.`item_id`
INNER JOIN `users` AS u ON `u`.`id` = `i`.`created_by`
WHERE `t`.`value`
BETWEEN minval
AND maxval
AND `t`.`taxo_id` = taxo
AND `i`.`parent_tag_id` in (id);
ELSE
SELECT `i` . * , `taxo`.`id` , `t`.`item_id` AS id, `u`.`name` AS user_name, `t`.`value` AS val
FROM (
`taxonomy` AS taxo
)
JOIN `item_taxo` AS t ON `t`.`taxo_id` = `taxo`.`id`
INNER JOIN `items` AS i ON `i`.`id` = `t`.`item_id`
INNER JOIN `users` AS u ON `u`.`id` = `i`.`created_by`
WHERE `t`.`value`
BETWEEN minval
AND maxval
AND `t`.`taxo_id` = taxo
AND `i`.`parent_tag_id` in (id);
END IF;
END;
//# MySQL returned an empty result set (i.e. zero rows).

DELIMITER ;

//调用它

调用salary_ref(2,"\'36\',\'50\',\'57\'",17000000,0,7)

这不适合我。

最佳答案

以下更改将解决这些问题。

更改 1:
我建议存储过程不要使用相同的参数名称来表示表的列名称。
除非您正确处理它们,否则会出现标识符冲突,但似乎并不存在。

更改过程签名如下:

CREATE PROCEDURE salary_ref(
_con int(11), IN csv_id_values varchar(120),
_maxval int(11), _minval int(11), _taxo int(11)
)

更改 2:
您正在尝试为 id 字段传递逗号分隔值以在 where 子句中使用。
但是使用转义字符并不能解决您的问题,而且这不是使用输入值的正确方法。

call salary_ref( 2, '36,50,57', 17000000, 0, 7 )

CSV 值 '36,50,57' 可以按原样用于 where 子句。
请参阅下面建议的更改

更改 3:
您可以在 CSV 值上使用 FIND_IN_SET,而不是在 WHERE 子句中使用 IN

 WHERE `t`.`value` BETWEEN _minval AND _maxval
AND `t`.`taxo_id` = _taxo
AND FIND_iN_SET( `i`.`parent_tag_id`, csv_id_values );
<小时/>

而且,我认为您的程序主体不完整。您的 IF conELSE 使用相同的 SELECT 语句。它是多余的,除非你改变它。

关于mysql - 如何在mysql的过程中为其中传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23430331/

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