SQL Error: Conversion failed when converting the varchar value 'PJOI015' to data type bit

SQL Error: Conversion failed when converting the varchar value 'PJOI015' to data type bit

错误本身并不令人困惑,但原因却令人困惑。

我的代码

DECLARE @Pcode as varchar(20)
DECLARE @PID as int

set @Pcode = 'PJOI015'

set @PID = (select productid from product where product.ProductCode = @Pcode and Deleted = 0)

select 'ProductCode' as Data, ProductCode as Value,'' as Other From Product where productid = @PID
Union All
select 'Descripton' as Data, Description as Value,'' as Other From Product where productid = @PID
Union All
select 'Long Descripton' as Data, FullDescription as Value,'' as Other From Product where productid = @PID
Union All
select 'Alternative Keywords' as Data, AlternativeKeywords as Value,'' as Other From Product where productid = @PID
Union All
select 'Manufactures Code' as Data, ManufacturerCode as Value,'' as Other From Product where productid = @PID
Union All
select 'Main Barcode' as Data, BarCode as Value,'' as Other From Product where productid = @PID
Union All
select 'Barcodes' as Data, Barcode as Value,
(case when BarcodeType = 0 then 'Default' 
when BarcodeType = 1 then 'Inner' 
when BarcodeType = 2 then 'Outer' 
when BarcodeType = 3 then 'Pallet' 
when BarcodeType = 4 then 'Other'
end) as Other From ProductBarcode where productid = @PID
Union all

select 'Default Supplier' as Data, Supplier.Name as Value,Supplier.SupplierCode as Other 
From Product left join Supplier on Supplier.SupplierID = Product.SupplierID 
where productid = @PID
Union all
SELECT       'Other Suppliers' as Data,Supplier.Name as Value, 'StanBuy ' + Cast(StandardBuy as varchar(10)) as Other
FROM          ProductSupplierPrice
left join Supplier on Supplier.SupplierID =  ProductSupplierPrice.SupplierID
WHERE        ProductID = @PID
GROUP BY ProductSupplierPrice.SupplierID, ProductID, StandardBuy,Supplier.Name
Union all
select 'Stocked?' as 'Data', ProductStockOption.Stocked as 'Value',branch.Name as 'Other' 
from ProductStockOption left join Branch on Branch.BranchID = ProductStockOption.BranchID
where ProductID = @PID

错误

Msg 245, Level 16, State 1, Line 8
Conversion failed when converting the varchar value 'PJOI015' to data type bit.

混乱

Union all
select 'Stocked?' as 'Data', ProductStockOption.Stocked as 'Value',branch.Name as 'Other' 
from ProductStockOption left join Branch on Branch.BranchID = ProductStockOption.BranchID
where ProductID = @PID

如果我删除最后一个联合(上图),代码可以正常工作。 我可以 运行 最后一个联合,但将 @PID 更改为实际数字。

ProductStockOption.Stocked是位域吗?尝试将其转换为 nvarchar,看看是否有帮助。