sql - 执行 SQL Server 存储过程
问题描述
我很困惑为什么这不执行第二个 else if 语句。我只需要在没有提供 First_name 和 Surname 但有 Age 时运行该语句。它运行第一个 if 语句,但不运行第二部分。
这是代码
ALTER PROCEDURE [PEOPLE]
(
@AGE int,
@SURNAME nvarchar(10),
@FIRST_NAME nvarchar(10)
)
AS
BEGIN
IF(@SURNAME IS NOT NULL AND @FIRST_NAME IS NOT NULL)
BEGIN
SELECT *
FROM MEMBERS
WHERE Is_Active = 1
AND (FIRST_NAME = @FIRST_NAME AND SURNAME=@SURNAME)
END
-- This else statement isn't being executed :-(
ELSE IF(@AGE <> -1 AND @FIRST_NAME='' AND @SURNAME='')
BEGIN
SELECT *
FROM MEMBERS
WHERE(AGE = @AGE)
END
END
这是我执行它的方式:
exec [PEOPLE] @AGE=24, @FIRST_NAME='', @SURNAME=''
如果有人可以提供帮助,我将不胜感激。谢谢
解决方案
ELSE IF
实际上, 要求两者且不@FIRST_NAME
为@SURNAME
空,这在 中已经满足IF
。
您可能需要ELSE IF
像这样重写:
ELSE IF(@AGE <> -1 AND (@FIRST_NAME IS NULL OR @FIRST_NAME='') AND (@SURNAME IS NULL OR @SURNAME=''))
推荐阅读
- javascript - 无法为我的 javascript 代码读取未定义的属性“rowIndex”
- python - uwsgi无法安装
- xpath - 选择 1) 在给定节点之前但 2) 也是另一个给定节点的后代的 `text()`
- javascript - ResponsiveVoice 中的“onend”并不意味着在播放文本之后?
- algorithm - 查找字符串中包含的所有子字符串的最快方法是什么?
- unity3d - 辅助“呼吸”字体大小(使用协程增加和减少)
- java - 远程桌面会话 (RDP) 后 JavaFX 应用程序屏幕黑屏且无响应
- django - VueJS 中的 ERR_ABORTED 404(未找到)错误
- node.js - 通过数组 mongoose 中的 id 查找对象
- sybase - 可以在没有元数据访问器信息的情况下连接到 Sybase 数据库吗?