2010-03-20 60 views
2

我想我会使用存储的例程来清理一些更复杂的SQL语句。从我读过的内容来看,在sql语句中使用存储过程似乎是不可能的,并且当我需要的是结果集时,存储函数仅返回单个值。我使用的MySQL 5.0版是否可以在SQL语句中调用过程?

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并返回结果集例程。我不想直接在上面的语句中包含他们的代码。

回答

2

我不知道如果MySQL可以使用任意的这些技术,但在SQL Server中我会尝试的两种不同的东西(至少它可能给你的东西寻找个emysql文档)之一:

然后

首先表中的值用来定义函数加入到 二,插套的SP到一个临时表,然后加入到TEM表

你也可以考虑把复杂的逻辑视图中的,然后就结果在加入视图后添加where子句。如果您的存储过程执行视图无法做到的动态事件,则这不起作用,但这是可能的。

相关问题