mysql - 使用一个 in 和 int 参数创建 mysql 存储过程

标签 mysql stored-procedures

    CREATE PROCEDURE SelectPetDetails
(
IN PetId int
) 
BEGIN
SELECT *  FROM pet p JOIN animal a on p.int_AnimalId=a.int_AnimalId JOIN breed b on a.int_BreedId=b.int_BreedId JOIN colorpattern c ON a.int_ColorPatternId=c.int_ColorPatternId WHERE int_PetOwnerId= PetId
END

我创建的存储过程出了什么问题?

最佳答案

要创建存储过程,您必须将默认分隔符 ; 更改为其他字符,例如“$$”或“//”或任何您想要的字符。

-- must change ; to $$ because stored procedure can have ; multiple times
DELIMITER $$  
drop procedure if exists SelectPetDetails$$  -- if you plan execute this many times
CREATE PROCEDURE SelectPetDetails (IN PetId int) 
BEGIN
    SELECT *  FROM pet p 
        JOIN animal a on p.int_AnimalId=a.int_AnimalId 
        JOIN breed b on a.int_BreedId=b.int_BreedId 
        JOIN colorpattern c ON a.int_ColorPatternId=c.int_ColorPatternId 
    WHERE int_PetOwnerId = PetId;
-- mark as end of stored procedure body 
END $$ 

DELIMITER ; 
-- return to regular delimiter

关于mysql - 使用一个 in 和 int 参数创建 mysql 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51299251/

相关文章:

sql-server - SSIS 中 SP 的执行不返回任何内容

c# - 将 IEnumerable<string> 作为用户定义的表类型参数传递给 SQL Server 存储过程

c++ - 如何获取连接到 mysql 服务器的主机列表

java - 即使显式设置,PreparedStatement 也永远不会超时

MySQL 按字母顺序排序但忽略 "The"

mysql - 无法从 AWS Lambda 连接到默认 VPC 中的 AWS RDS 实例

MySql:在记录不存在的情况下两次连接同一个表

sql - 如果不满足条件,如何使存储过程失败

mysql - 存储过程使用比预期更多的内存

php - 使用存储过程更新数据库时出错