0

このSQLテーブルの請求書があります。私が達成しようとしているのは、特定の請求書を取得するために主キー値を送信する関数を作成することです。次に、請求書の「受信済み」のフィールドを確認します。これはビットフィールドです。が1の場合、関数「Received」から戻りたいです。0の場合、「未受信」を返します。

私はそれを自分で試してみました:

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フィールドをチェックし、返されるステータス値を設定する方法です。

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

4

1 に答える 1

0

ケースをチェックしてください。

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

ただし、この種のプレゼンテーション レイヤー ロジックを UDF から除外し、データ レイヤー/RDBMS 全体から完全に遠ざけることをお勧めします。これにより、プレゼンテーションが行われるはずの場所でプレゼンテーションを処理します: プレゼンテーション レイヤーで/論理。

于 2012-04-04T23:50:01.783 に答える