2012-04-04 9 views
0

私はこのSQLテーブルの請求書を持っています。私が達成しようとしているのは、特定の請求書を取得するために主キー値を送信する関数を書くことです。次に、私はインボイスのフィールドをチェックしたいと思う 'Received'これはビットフィールドです。 ifが1の場合、関数 'Received'から戻りたいと思います。それが0の場合、私は 'Not Received'を返したいと思います。sql関数テーブル内の値の条件に基づいて文字列を返す方法

私はそれで自分自身を行くを持っていた:

ALTER FUNCTION dbo.InvoiceStatus(@InvoiceId INT) 
RETURNS VARCHAR 
BEGIN 
declare @Status varchar(100) 

    SELECT * 
     FROM [Invoices_Prod].[dbo].[Invoice] 
     Where InvoiceId = @InvoiceId 

     ... 

     How to check the received value? 

     ... 

    return @Status 

END 
GO 

だから私はでInvoiceIdを渡すと、select文で特定の請求書を取得しています。私が欠けているのは、Receivedフィールドをチェックし、返されるステータス値を設定する方法です。

誰もがこれを手伝ってくれますか?

答えて

0

CASEをご覧ください。私は、しかし、あなたのUDFのの出ても、完全に遠く離れて全体のデータ層/ RDBMSからプレゼンテーション層ロジックのこの種を維持するため、それがはずのプレゼンテーションを処理することをお勧めします

Select [foo], [bar], 
    case when [received] = 1 
    then 'Received' 
    else 'Not received' 
    end as Status 
From [Invoice] 
Where [InvoiceId] = @InvoiceId 
.... 

実行される:プレゼンテーション層/ロジック内。

関連する問題