我对 Microsoft T-sql(用于 Oracle PL/SQL)还很陌生,我遇到了一个非常简单的过程的烦人问题。
我创建了以下过程
CREATE PROCEDURE [dbo].[ele_test] @productId INT
AS
DECLARE @productCode VARCHAR(100);
DECLARE @productDescription VARCHAR(100);
DECLARE @error VARCHAR(100);
--Fetch product
IF @productId != NULL
BEGIN
SELECT @productCode = ProductCode
,@productDescription = ProductDescription
FROM d_afterpay.dbo.Product
WHERE ProductId = @productId
END
IF @@ROWCOUNT = 0
BEGIN
SET @error = 'Product not found: ' + cast(@productId AS VARCHAR(19))
RAISERROR (@error,16,1);
END
当我以这种方式运行它时:
exec ele_test 5
我得到:
Msg 50000, Level 16, State 1, Procedure ele_test, Line 20
Product not found. Productid : 5
然而,当我只运行这样的查询时:
SELECT * FROM d_afterpay.dbo.Product
WHERE ProductId = 5
我确实得到了正确的结果......知道我做错了什么吗?