我正在尝试在SQL中创建存储过程。
以下是我的语法:
CREATE PROCEDURE [dbo].[getAllCitizens]
@NoInfo as nvarchar(50) = "No contact information inserted."
AS
BEGIN
SET NOCOUNT ON;
IF ctznPhone != null
BEGIN
SELECT ctznTz, ctznLname, ctznFname, ctznPhone
FROM tblCitizens
Where ctznLivestat=1
END
ELSE
BEGIN
IF ctznEml != null
BEGIN
SELECT ctznTz, ctznLname, ctznFname, ctznEml
FROM tblCitizens
Where ctznLivestat=1
END
ELSE
BEGIN
SELECT ctznTz, ctznLname, ctznFname, @NoInfo
FROM tblCitizens
Where ctznLivestat=1
END
END
END
我该如何查看哪个表中的列ctznPhone
和ctznEml
?
我尝试过dbo.tablename.columname
以及带有()
和[]
的其他尝试,但似乎都不起作用。
最终,这个存储过程将由C#数据读取器调用。我的目标是构建一个存储过程,当被调用时,它将返回一行中选定的单元格,具体取决于特定单元格中的信息:
- 如果
ctznPhone
不为null,则要获取它。 - 如果为null,则要获取
ctznEml
。 - 如果两者都为null,则要返回一条没有联系信息的消息(我已经将其放在
@NoInfo
中)。
我这样做的方式正确吗?
!= null
是错误的,你需要使用is not null
或is null
这两个都是一元运算符。 - Hogan