我想我会使用存储例程来清理一些更复杂的 SQL 语句。从我读过的内容来看,在 sql 语句中使用存储过程似乎是不可能的,而当我需要的是结果集时,存储函数只返回一个值。我正在使用 mySQL v5.0
SELECT p.`id`, gi.`id`
FROM `sport`.`players` AS p JOIN `sport`.`gameinstances` AS gi
ON p.`id` = gi.`playerid`
WHERE (p.`playerid` IN (CALL findPlayers`("Canada", "2002")))
AND (gi.`instanceid` NOT IN (CALL findGameInstances`("Canada", "2002")));
例如,过程“findPlayers”和“findGameInstances”是执行某些 SQL 并返回结果集的存储例程。我不想将他们的代码直接包含在上面的声明中。
最佳答案
我不知道 mysql 是否可以使用这些技术中的任何一种,但是在 SQl server 中我会尝试两种不同的方法之一(至少它可能会让您在 emysql 文档中寻找一些东西):
首先一个表值使用定义的函数然后连接到那个 二、将sp的结果集插入到temp表中,然后join到tem表中
您也可以考虑将复杂的逻辑放在 View 中,然后在加入 View 后仅添加 where 子句。如果您的存储过程执行 View 无法执行的动态操作,这将不起作用,但这是可能的。
关于stored-procedures - 是否可以在 SQL 语句中调用过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484325/