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

Returning a True or False value in a Stored Procedure

我正在尝试在 SQL Server Management Studio 中创建一个存储过程,我可以在其中找到属于具有特定状态的特定供应商的 table 中的任何发票。例如,我的 VB 应用程序中有供应商 123456,我想查找他们在我的 InvoiceTable 中是否有任何发票,其中状态 = B 且 return 为真值或假值。这是我到目前为止一直在尝试的:

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 

现在它总是 return 是一个单一的 "False" 值,无论 orderstatus = B 和 vendornumber = @vendornumber 与否。

我不确定这是否可行,或者我什至在正确的页面上

I want to find if they have any invoices in my InvoiceTable where the status = B and return either a true or false value

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

你可以试试这个

IF EXISTS(SELECT * 
    FROM InvoiceTable
    WHERE OrderStatus = 'B' and VendorNumber = @VendorNumber
    ) 
  SELECT 'True'
ELSE
  SELECT 'False'
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'