我有这个SQL表Invoice。我想要实现的是编写一个函数,您可以发送主键值来获取特定发票。然后我想检查发票'收到'的字段这是一个位字段。如果是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字段并设置要返回的状态值。
任何人都可以帮我吗?
答案 0 :(得分:0)
查看CASE。
Select [foo], [bar],
case when [received] = 1
then 'Received'
else 'Not received'
end as Status
From [Invoice]
Where [InvoiceId] = @InvoiceId
....
但是,我建议保持UDF的这种表示层逻辑 out ,甚至完全远离整个数据层/ RDBMS,从而处理它所在的表示应该完成:在表示层/逻辑中。