2012-03-07 14 views
0

MySQLどのように条件を作成しますか?

私は、引数の有無にかかわらず呼び出すことができるストアドプロシージャを作成しようとしています。これは可能ですか?

WHERE stuff IS NULL OR d.NAME=stuff; 

パラメータを供給しなければならない、しかし、あなた:あなたは引数を指定した場合、その名前がnullを下回る場合、または単にすべての

SQLで
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 ; 
+0

[MySQLで句は、ストアドプロシージャの条件(http://stackoverflow.com/questions/5305394/conditional-where-clause-in-mysql-stored-procedure)の可能重複 –

答えて

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 
4

選択を選択しない場合はさらに、それが列を選択しますNULLを渡すことができます。

関連する問題