0

我有这个 SQL 表 Invoice。我想要实现的是编写一个函数,您可以将主键值发送到以获取特定发票。然后我想检查 Invoice 'Received' 的一个字段,这是一个位字段。如果是 1,我想从函数“已接收”返回。如果为 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 语句获取特定的 Invoice。我缺少的是如何检查 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 回答