2016-08-10 38 views
2

我有SP上得到USER_ID作爲輸入,並從表中獲取GROUP_ID,但它顯示錯誤,當我試圖運行它:必須在SQL聲明標量變量....與輸入和輸出參數

必須聲明標量變量@Group_i

我的存儲過程:

Alter PROCEDURE [dbo].[DisplayDetails] 

@User_Id int, 
@Group_Id int OUTPUT 

AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

Begin 
-- Insert statements for procedure here 
SELECT 
@Group_Id=(select distinct(Group_Id) from input_files_updated) 
from INPUT_FILES_updated where [User_Id][email protected]_Id 

END 
END 

GO 

查詢執行SP:

Declare @Group_I int  

Execute [dbo].[DisplayDetails] @User_Id='3',  
@[email protected]_I out 

爲什麼我得到這個錯誤?你的

+0

標記dbms產品! (該代碼根本不像ANSI SQL。) – jarlh

+1

爲什麼是大寫鎖定? – sagi

+0

@Group_I顯示必須聲明標量變量 – thakur

回答

1

一點點固定查詢:

Alter PROCEDURE [dbo].[DisplayDetails] 
    @User_Id int, 
    @Group_Id int OUTPUT 
AS 
BEGIN 
SET NOCOUNT ON; 

SELECT @Group_Id = (
    select top 1 Group_Id 
    from INPUT_FILES_updated 
    where [User_Id][email protected]_Id 
) 

RETURN 
END 

我記得必須有SP一句話RETURN。然後嘗試:

Declare @Group_I int  

Execute [dbo].[DisplayDetails] @User_Id=3, @[email protected]_I output 

SELECT @Group_I 
+0

相同的錯誤 - 必須聲明標量變量@Group_I – thakur

+0

看,我剛剛創建了表' INPUT_FILES_updated'有兩列'User_id'和'Group_Id'然後我在那裏添加兩個值'(3,5)',然後在我的答案中創建如下所示的SP,然後使用DECLARE和EXECUTE運行部分,並且ALL工作正常好** – gofr1

+0

我創建了一個新表來驗證表是否存在某些問題..但對於我來說,對於相同的過程錯誤仍然存​​在。我應該怎麼做「? – thakur