我對微軟的T-sql非常陌生(用於Oracle PL/SQL),我用一個非常簡單的過程遇到了一個煩人的問題。Microsoft sql存儲過程不能正確執行select語句
我創建了以下過程
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
我確實得到了正確的結果... 任何想法我做錯了什麼?
這真的是導致問題的代碼?我希望你能從你發佈的代碼中得到類似'Product not found:5'的消息,而不是'Product not found。'。 ProductId = 5' – nurdglaw
確實給出'Product not found:5',馬虎的複製和粘貼工作;} – ErikL
OK。這個問題可能在你發佈的代碼中。不知道它是什麼;我會一直盯着它! – nurdglaw