实施例
我正在尝试创建一个可以使用或不使用参数调用的存储过程。这可能吗?此外,如果你提供一个参数,它将选择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 ;
答案 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