Gur*_*epS 2 sql t-sql sql-server
我有一个存储过程,我正在尝试编写,我想在一次评估不同参数的多个条件.这个的最佳语法是什么?
以下是我所拥有的:
AS
BEGIN
DECLARE @GARRISON nvarchar(255)
DECLARE @ASSETTYPE nvarchar(255)
DECLARE @FIVALUE int
IF ( ( @GARRISON IS NOT 'Netheravon'
AND @GARRISON IS NOT 'Ludgershall'
)
AND @INTERRUPT >= 5)
BEGIN
END
ELSE
END
Run Code Online (Sandbox Code Playgroud)
您可以使用.
IF ((@GARRISON != 'Netheravon' AND @GARRISON != 'Ludgershall') )
AND @INTERRUPT >= 5)
Run Code Online (Sandbox Code Playgroud)
这可以缩短为
IF (@GARRISON NOT IN ('Netheravon', 'Ludgershall' )
AND @INTERRUPT >= 5)
Run Code Online (Sandbox Code Playgroud)
您遇到的问题是@variable IS NOT 'constant'- 除非检查null,否则这不是有效的SQL语法.平等使用=,非平等使用!=或<>(两种工作IIRC).
编辑:这是我用于测试的精确sctipt,并且完全按预期工作.SQL Server 2008
DECLARE @GARRISON nvarchar(255)
DECLARE @INTERRUPT INT
SET @GARRISON = 'Test'
SET @INTERRUPT = 10
IF (@GARRISON NOT IN ('Netheravon' ,'Ludgershall' )
AND @INTERRUPT >= 5)
BEGIN
SELECT 1
END
Run Code Online (Sandbox Code Playgroud)
以上正确输出"1",因为两个条件都评估为真.如果我@INTERRUPT改为4,或者@GARRISON改为Netheravon或Ludgershall,那么就没有输出.这是我期望的确切行为.
注意:BEGIN...ENDSQL中不能有空块,因此如果为空,则会出现错误Incorrect syntax near 'END'.
| 归档时间: |
|
| 查看次数: |
10341 次 |
| 最近记录: |