1

私は 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

適切な結果が得られます...何が間違っているのか分かりますか?

4

1 に答える 1