【发布时间】:2016-08-17 22:12:34
【问题描述】:
我正在尝试在 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不为空,那么我想得到它。 - 如果它为空,我想得到
ctznEml。 - 如果 THAT 也为 null,我想返回一条消息,指出没有可用的联系信息(我放在
@NoInfo中的字符串)。
我这样做对吗?
【问题讨论】:
-
COALESCE 是你想要的,但你也应该知道,
!= null是错误的,你想要is not null或is null这些都是泌尿操作员。
标签: c# sql sql-server tsql stored-procedures