2016-10-17 99 views
0

有人問我通過在SQL Server存儲過程來計算數量的百分比,但由於某些原因,無論參數是什麼,我總是得到0SQL Server存儲過程總是返回0

我問題在這裏發生了什麼?

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE pCalcular 
    @PrecioTotal INT, 
    @cantidad INT 
AS 
BEGIN 
    PRINT ' Calculando ' + CAST (@PrecioTotal * @cantidad AS VARCHAR(40)) 
    SELECT @cantidad = @PrecioTotal * @cantidad 
END 

我打電話給下面的程序,我不確定問題是什麼。

DECLARE @abc AS INT 
EXEC @abc = pCalcular 70, .1 
PRINT @abc 
+0

0只是proc的返回碼。 0表示它已成功執行。 –

回答

1

您只在過程中設置值@cantidad。您只需要從PROC中選擇該值即可。嘗試只是有;

SELECT @PrecioTotal * @cantidad 

此外,看一看從像OUTPUT參數過程中返回數據的other ways

編輯:

你的程序應該是這樣的;

ALTER PROCEDURE pCalcular 
    @PrecioTotal INT, 
    @cantidad INT 
AS 
BEGIN 
    PRINT ' Calculando ' + CAST (@PrecioTotal * @cantidad AS VARCHAR(40)) 
    SELECT @PrecioTotal * @cantidad 
END 
+0

'ALTER PROCEDURE pCalcularIva \t - 添加參數存儲過程在這裏 \t(@total INT,@ porcentaje INT,INT @result OUTPUT) AS BEGIN \t SELECT @result = @total * @porcentaje \t SELECT @result END GO' –

+0

Woops,沒有寫完我的評論,我很抱歉。這樣的事情呢?在這種情況下,我測試了它,它仍然返回一個0. –

+0

不。在這種情況下,您不需要選擇一個變量。您只需將您選擇的結果作爲程序返回的數據集。看到我的答案編輯。 –