MySQL过程的所有行参数

MySQL过程的所有行参数,mysql,stored-procedures,parameters,Mysql,Stored Procedures,Parameters,我想创建一个过程,它可以接受一个单独的ID,或者在没有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_id设置为ALL id,以及如何调用W

我想创建一个过程,它可以接受一个单独的ID,或者在没有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_id设置为ALL 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

。。。其中proc_id=-1或primary_id=proc_id
谢谢。我不知道如何将评论标记为解决方案。由于我是从外部库(MATLAB)调用这个过程的,所以我还没有找到将NULL作为参数传递的语法。即使在定义过程时,我也必须将参数类型设置为整数,因此不能将NULL作为参数传递。你知道怎么解决这个问题吗?谢谢,我没有使用MATLAB,也不知道传递参数的API。是的,我认为在定义过程参数时,MySQL仍然存在问题。如果
proc\u id
是一个
整数
,那么我将无法使用
NULL
调用它,可以吗?当然,您可以使用NULL作为任何数据类型的值。