2010-12-21 1 views
0

SQLストアドプロシージャに関するいくつかの助けが必要ですが、私はそれに多くの経験がありません。 私はテーブル "dbo.Lookup_Country"を持っています。 ID、名前、コードの3つのフィールドがあります。 コードで国名を取得するストアドプロシージャを作成しました。SQLストアドプロシージャのヘルプ

0結果がある場合、それはIDで検索することで結果があるかどうかを確認するために持っているように、私は、ストアドプロシージャを調整する必要が
Select Name from Lookup_Country where Code = @Code 

:ID = @code

Lookup_Countryから

選択名

基本的に私はある種の「IF」構造が必要です:

if (Select Name from Lookup_Country where Code = @Code) == 0 results 
     Select Name from Lookup_Country where Id = @Code 

これは可能ですか?ヘルプ皆のため

THX

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

どのエンジンをお使いですか? ms-sql、my-sql? – none

答えて

2

は最初の変数に選択の結果を入れて、あなたはその結果に、カウントを行うことができ、それは、あなたがゼロであればidで検索します

ifステートメントを使用する方法の詳細については、SQL Serverを使用している場合はこの記事を参照してください。ただし、別のデータベースを使用している場合はロジックが適用されます。if構文が異なる場合があります。

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 

あなたは、テーブル変数を使用するか、数えるかどうか、それが問題ではありません。このため、本当にエレガントな方法はありません

http://msdn.microsoft.com/en-us/library/ms182587.aspx

0

それはあなたを助けるでしょうか?

Select Name from Lookup_Country where (Code = @Code OR Id = @Code) 
+1

これは、* Code = @ Code *の行が存在する場合でも、* ID = @ Code *の行を返します。 –

0

あなたはおそらくちょうどor使用することができます。

Select Name from Lookup_Country where Code = @Code or Id = @Code 
4

...

またはあなたが持っていますおそらく集合体を持つこの構造体

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 

出力先に情報がありますどのようにが見つかりました...