我需要一些SQL存储过程的帮助,我没有很多经验。 我有一个表“dbo.Lookup_Country”。它包含3个字段:ID,Name,Code。 现在我编写了一个存储过程,通过Code检索国家名称。
Select Name from Lookup_Country where Code = @Code
我需要调整存储过程,以便如果有0个结果,则必须通过ID搜索来查看是否有结果:
从Lookup_Country中选择名称,其中Id = @Code
所以基本上我需要某种'IF'结构:
if (Select Name from Lookup_Country where Code = @Code) == 0 results
Select Name from Lookup_Country where Id = @Code
这可能吗?
THX
感谢所有人,我用过这个:
DECLARE @Name nvarchar(50)
-- Insert statements for procedure here
SET @Name = (SELECT Name from dbo.Lookup_Country WHERE Code = @CODE)
IF @Name != ''
SELECT Name from dbo.Lookup_Country WHERE Code = @CODE
ELSE
SELECT Name from dbo.Lookup_Country WHERE ID = @CODE
答案 0 :(得分:4)
对此没有一种非常优雅的方式......
SELECT Name
INTO #foo
from Lookup_Country where Code = @Code
IF @@ROWCOUNT <> 0
SELECT Name FROM #foo
ELSE
Select Name from Lookup_Country where Id = @Code
无论您使用表变量还是计数,都无关紧要
或者你有这个结构,也许有一个聚合
SELECT TOP 1
Name
FROM
(
Select Name, 0 AS Precedence from Lookup_Country where Code = @Code
UNION ALL
Select Name, 1 AS Precedence from Lookup_Country where Id = @Code
) foo
ORDER BY
Precedence
如果您在输出中包含优先顺序,则可以获得有关 的信息
的信息。答案 1 :(得分:2)
将第一个选择的结果放入一个变量,然后你可以对该结果进行计数,如果为零,那么你将按id进行搜索。
要了解有关如何使用if
语句的更多信息,请查看本文,如果您使用的是SQL Server,但是,如果您使用的是其他数据库,则逻辑仍会应用if
语法可能不同。
答案 2 :(得分:0)
对你有帮助吗?
Select Name from Lookup_Country where (Code = @Code OR Id = @Code)
答案 3 :(得分:0)
您可以使用or
:
Select Name from Lookup_Country where Code = @Code or Id = @Code