MySQL怎么做条件在哪里?

时间:2012-03-07 15:16:46

标签: mysql stored-procedures

实施例

我正在尝试创建一个可以使用或不使用参数调用的存储过程。这可能吗?此外,如果你提供一个参数,它将选择OR以下的列,如果该名称为null,如果不选择只选择所有

DELIMITER ##
CREATE PROCEDURE showStuff(IN stuff varchar(45))
BEGIN 

SELECT
d.NAME,
s.SIGN,
c.FACE

FROM Format f

JOIN SIGNAL s ON s.SIG_ID=f.SIG_ID
JOIN DEPT d on d.DEP_ID=s.DEP_ID
JOIN CHIM c ON c.F_ID=f.F_ID

WHERE IF(stuff IS NULL, d.NAME=stuff, ??);

ORDER BY d.NAME;

END ##
DELIMITER ;

2 个答案:

答案 0 :(得分:4)

在SQL中:

WHERE stuff IS NULL OR d.NAME=stuff;

必须提供参数,但您可以传递NULL

答案 1 :(得分:1)

有点像这样,虽然你的SQL代码本身就错了。

USE [databasename]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[procedurename] 
AS
BEGIN

SELECT 
d.NAME,
s.SIGN,
c.FACE

FROM Format f

JOIN SIGNAL s ON s.SIG_ID=f.SIG_ID
JOIN DEPT d on d.DEP_ID=s.DEP_ID
JOIN CHIM c ON c.F_ID=f.F_ID

WHERE IF(stuff IS NULL, d.NAME=stuff, ??)

ORDER BY d.NAME

END