在存储过程中返回True或False值

时间:2015-09-22 17:51:09

标签: sql-server sql-server-2008 stored-procedures vb6 ssms

我正在尝试在SQL Server Management Studio中创建一个存储过程,在那里我可以找到属于具有特定状态的某个Vendor的表中的任何发票。例如,我的VB应用程序中有供应商123456,我想查找他的InvoiceTable中是否有任何发票,其中status = B并返回true或false值。这是我到目前为止所尝试的:

ALTER PROCEDURE [dbo].[CheckStatus] 

@VendorNumber  char    
AS
BEGIN

Select distinct
CASE WHEN OrderStatus = 'B' and VendorNumber = @VendorNumber then 'true' else 'False' END as Status
from InvoiceTable

END 

现在它总是返回一个单数的“假”值,无论ordertatus = B和vendornumber = @vendornumber。

我不确定这是否可行,或者我甚至在右页

2 个答案:

答案 0 :(得分:3)

你可以试试这个

IF EXISTS(SELECT * 
    FROM InvoiceTable
    WHERE OrderStatus = 'B' and VendorNumber = @VendorNumber
    ) 
  SELECT 'True'
ELSE
  SELECT 'False'

答案 1 :(得分:0)

DECLARE @Result varchar(10)

IF EXISTS(SELECT * 
        FROM InvoiceTable
        WHERE OrderStatus = 'B' and VendorNumber = @VendorNumber
        ) 
BEGIN
      SET @Result = 'True'
END
ELSE BEGIN
      SET @Result = 'False'
END

RETURN @Result

注意-您可以使用bit代替返回“ True”或“ False”