我正在MySQL Workbench中工作,并使用以下SQL示例数据。https://www.databasestar.com/sample-database-superheroes/
我的图表附在下面。
如何创建一个存储过程,在其中输入超级英雄的名字(例如Firebird)并获得他们拥有的特定火主题超能力?
到目前为止,我的代码看起来像这样:
DROP PROCEDURE IF EXISTS Elemental_Heroes;
DELIMITER $$
CREATE PROCEDURE Elemental_Heroes(
IN HeroName VARCHAR(250),
OUT ElementalCat VARCHAR(250))
BEGIN
DECLARE credit DECIMAL DEFAULT 0;
SELECT
s.id,
s.superhero_name,
sp.power_name
FROM superhero s
LEFT JOIN hero_power hp ON s.id = hp.hero_id
LEFT JOIN superpower sp ON hp.power_id = sp.id
WHERE sp.id IN (56,79,90,104,140) AND s.superhero_name = HeroName
GROUP BY s.id, s.superhero_name, sp.power_name;
IF
ELSE
END$$
DELIMITER ;
CALL Elemental_Heroes(Firebird);
其中IF ELSE
部分只是我知道最终必须出现的条件语句的占位符,整个elect部分(减去s.superhero_name = HeroName
)按预期运行。
我也想知道是否有任何方法可以输出多个类别。因为火鸟有火焰控制,火焰抗性,和耐热抗性,我希望所有这三个类别都是输出时,我调用Elemental_Heroes(Firebird)
。
1条答案
按热度按时间iyr7buue1#
样。
创建源数据
创建通过提供的
val
值检索name
列表的存储过程SP通过
in_val
输入参数中提供的值查询名称,并将找到的值保存到out_names_list
输出参数中使用SP
在CALL中,我们为
in_val
参数提供标准值,并使用用户定义的变量@output
作为放置输出的位置。实心JSON数组输出
| @输出|
| - -|
| [“姓名2”、“姓名3”]|
输出被解析为分隔值
| 姓名|
| - -|
| 姓名2|
| 姓名3|
fiddle