是否可以在SQL语句中调用过程?

时间:2010-03-20 19:02:44

标签: stored-procedures mysql

我以为我会使用存储的例程来清理一些更复杂的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并返回结果集。我不想直接在上面的语句中包含他们的代码。

1 个答案:

答案 0 :(得分:2)

我不知道mysql是否可以使用这些技术中的任何一种,但是在SQl服务器中我会尝试两种不同的东西之一(至少它可能会给你一些在emysql文档中寻找的东西):

首先使用已定义函数的表值然后加入到该值中 其次,将sp的结果集插入临时表,然后加入到tem表

您还可以考虑将复杂逻辑放在视图中,然后在加入视图后添加where子句。如果您的存储过程执行视图无法执行的动态操作,则此操作无效。但这是可能的。