2016-03-03 72 views
1

宣言存储过程:存储过程不返回正确的输出

CREATE PROCEDURE countingObject 
     @OBJ1_count INT OUTPUT, 
     @OBJ2_count INT OUTPUT, 
     @OBJ3_count INT OUTPUT 
    AS 
    BEGIN 
     SELECT @OBJ1_count = (SELECT COUNT(*) FROM OBJECTS 
           WHERE OBJECT_NAME = 'OBJ1'); 
     SELECT @OBJ2_count = (SELECT COUNT(*) FROM OBJECTS 
           WHERE OBJECT_NAME = 'OBJ2'); 
     SELECT @OBJ3_count = (SELECT COUNT(*) FROM OBJECTS 
           WHERE OBJECT_NAME='OBJ3') 
    END; 

而且如下

DECLARE @OBJ1_coun INT 
DECLARE @OBJ2_coun INT 
DECLARE @OBJ3_coun INT 

EXECUTE countingObject @OBJ1_coun OUTPUT, @OBJ1_coun OUTPUT, @OBJ1_coun OUTPUT; 

SELECT 
    @OBJ1_coun as OBJ1_Count, 
    @OBJ2_coun as OBJ2_Count, 
    @OBJ3_coun as OBJ3_Count 

输出被返回这样

Output

执行完成相应的表是

Table

请帮助我,我做错了什么。

在此先感谢。

回答

1

这就是你通话存储过程是错误的 - 你返回所有三项罪名成@OBJ1_coun ....

EXECUTE countingObject @OBJ1_coun OUTPUT, @OBJ1_coun OUTPUT, @OBJ1_coun OUTPUT; 
         -- OK ----   ********** WRONG ***** WRONG 

试试这个:

DECLARE @OBJ1_coun INT 
DECLARE @OBJ2_coun INT 
DECLARE @OBJ3_coun INT 

EXECUTE countingObject @OBJ1_coun OUTPUT, @OBJ2_coun OUTPUT, @OBJ3_coun OUTPUT; 

SELECT 
    @OBJ1_coun as OBJ1_Count, 
    @OBJ2_coun as OBJ2_Count, 
    @OBJ3_coun as OBJ3_Count 
+0

非常感谢..感到抱歉我的愚蠢的错误,但不能投票给你,因为我的声望点是非常少的投票... –

0

你所有分配输出值相同的声明的变量@ OBJ1_coun

试试这个

EXECUTE countingObject @OBJ1_coun OUTPUT, @OBJ2_coun OUTPUT, @OBJ3_coun OUTPUT; 
+0

非常感谢..感到抱歉我的愚蠢的错误,但不能投票你作为我的声望点是非常少的投票... –