私は 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
適切な結果が得られます...何が間違っているのか分かりますか?