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

标签 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 并返回结果集的存储例程。我不想将他们的代码直接包含在上面的声明中。

最佳答案

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

首先一个表值使用定义的函数然后连接到那个 二、将sp的结果集插入到temp表中,然后join到tem表中

您也可以考虑将复杂的逻辑放在 View 中,然后在加入 View 后仅添加 where 子句。如果您的存储过程执行 View 无法执行的动态操作,这将不起作用,但这是可能的。

关于stored-procedures - 是否可以在 SQL 语句中调用过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484325/

相关文章:

mysql - 使用 DECLARE for MySQL LOAD DATA 语句

php通过表单更新mysql表,立即重新加载页面上的信息

mysql - 选择所有,除非 MYSQL 中的特定单元格值

mysql - 访问数据库表值并将它们用作 mysql 中存储过程的参数

sql-server - 如何从另一台服务器中的存储过程运行作业?

PHP如何在mysql查询列表中回显每组的第一个值

c# - Insert 的 MySQL C# 性能

php - 用另一个数据库的结果填充数据库?

MySQL 获取下一个游标问题

MySQL 存储过程,游标未打开 (1326)