作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 sql server 中编写一个相当简单的存储过程。如果我的错误来源很明显,我就没有发现。 SSMS 给我“')' 附近的语法不正确。”任何帮助,将不胜感激。这是程序:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sprocAddSymbols] @symbol NVARCHAR(10)
AS
BEGIN
DECLARE @symbolCheck NVARCHAR(10)
DECLARE @statusCheck NVARCHAR(10)
SET @symbolCheck = (SELECT Symbol FROM tblSymbolsMain WHERE Symbol = @symbol)
SET @statusCheck = (SELECT SymbolStatus FROM tblSymbolsMain WHERE Symbol = @symbol)
IF (@symbolCheck IS NOT NULL AND @statusCheck = 'Inactive')
BEGIN
UPDATE tblSymbolsMain
SET SymbolStatus = 'Active'
WHERE Symbol = @symbol
END
ELSE
INSERT INTO tblSymbolsMain (Symbol, DateAdded, Status)
VALUES (@symbol, GETDATE(), 'Active')
最佳答案
你最后错过了一个 END。总是缩进你的代码。它不仅看起来更好,而且您不会遇到这些情况。此外,即使您在 IF/ELSE 或任何其他不需要 BEING/END 的块中只有单个语句,也最好使用 BEGIN 和 END。当稍后有人可以添加语句并打破作为 IF 或 ELSE 块一部分的代码思维时,它减少了维护噩梦。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sprocAddSymbols] @symbol NVARCHAR(10)
AS
BEGIN
DECLARE @symbolCheck NVARCHAR(10)
DECLARE @statusCheck NVARCHAR(10)
SET @symbolCheck = (SELECT Symbol FROM tblSymbolsMain WHERE Symbol = @symbol)
SET @statusCheck = (SELECT SymbolStatus FROM tblSymbolsMain WHERE Symbol = @symbol)
IF (@symbolCheck IS NOT NULL AND @statusCheck = 'Inactive')
BEGIN
UPDATE tblSymbolsMain
SET SymbolStatus = 'Active'
WHERE Symbol = @symbol
END
ELSE
BEGIN
INSERT INTO tblSymbolsMain (Symbol, DateAdded, Status)
VALUES (@symbol, GETDATE(), 'Active')
END
END
关于sql-server-2008 - SQL Server 2008 R2 If/else 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097421/
我是一名优秀的程序员,十分优秀!