mysql - MySQL 过程的 ALL ROWS 参数

标签 mysql stored-procedures parameters

我想创建一个程序,它可以接受一个单独的 ID,或者在没有它的情况下,所有可能的 ID。

我的设置如下:

CREATE PROCEDURE my_procedure(proc_id INTEGER)
IF proc_id = -1 THEN SET proc_id = ALL_IDS END IF

SELECT something...
FROM   somewhere...
WHERE  primary_id = proc_id;

我想知道如何使 ALL_IDS 成为所有 ID,以及如何调用 WHERE 语句以对两个选项都可用。

谢谢。

最佳答案

我认为最直接的编码方式是:

WHERE  primary_id = proc_id OR proc_id = -1

(我没有看到@EdGibbs 已经在评论中给出了这个答案。你为什么不把它作为答案发布?)

顺便说一句,我会使用 NULL 而不是 -1,因为 SQL 中的 NULL 意味着用于“缺少值”。那么查询将有:

WHERE  primary_id = proc_id OR proc_id IS NULL

关于mysql - MySQL 过程的 ALL ROWS 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494164/

相关文章:

php - 这是一个安全/强大的输入清理功能吗?

mysql - 在不返回资源(10,mysql结果)的情况下计算行数的最佳方法是什么?

sql - 连接数字的存储过程

mysql - 选择树节点的所有后代

objective-c - 如何在 iOS 中通过参数将 UITableView IndexPath 传递给 UIButton @selector?

parameters - Rust 标准库闭包参数 : run time or compile time?

c++ - 我如何为用户生成个人访问 token ?

MySql:知道表最后修改的日期

mysql - 如何从mysql中的存储过程中插入带@的电子邮件ID字段?

php - 保留参数并从表单中添加另一个