MySQL, как вы делаете условный где? - PullRequest
0 голосов
/ 07 марта 2012

Пример

Я пытаюсь создать хранимую процедуру, которую можно вызывать с аргументом или без него.Это возможно?Более того, если вы предоставите аргумент, он выберет столбцы ниже ИЛИ, если это имя равно нулю, если не выбрано, просто выберите все

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 ]

4 голосов
/ 07 марта 2012

В SQL:

WHERE stuff IS NULL OR d.NAME=stuff;

Параметр должен быть указан, но вы можете передать NULL.

1 голос
/ 07 марта 2012

Вроде как, хотя ваш 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...