2012-12-14 39 views
4

請什麼,因爲它是在錯誤信息說是錯誤的下面必須在SQL過程聲明標量

DECLARE @result int 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    set @result = (select COUNT(*) from populate) 

    if (@result > 1) 
    Begin 
     insert into populate (brch, terminal_id) values(@branch, @atmid) 
    end 

SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 

    CREATE PROCEDURE insertion @id varchar(50), @brch varchar(50) 
    -- Add the parameters for the stored procedure here 

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

    -- Insert statements for procedure here 
    set @result = (COUNT(*) from populate) 

    if (@result > 1) 
    Begin 
     insert into populate (brch, terminal_id) values(@id, @brch) 
    end 
    END 
    GO 
+0

請發表您的完整的存儲過程,包括創建語句 –

+1

沒有得到一個'COUNT(*)'只是爲了找出是否有多於一排!做'SELECT(*)FROM(SELECT TOP 2 * FROM Populate)''。另外,您還沒有發佈足夠的過程 - 如果真的是存儲過程,「CREATE PROCEDURE」語句在哪裏? – ErikE

回答

0

的問題,程序語句是@branch@atmid不在使用其值之前的任何地方提及。

您已經聲明@resultset它的價值,所以你需要做同樣爲@branch@atmid爲好,該系統不能爲你占卜值。

+0

IT給出錯誤消息156,級別15,狀態1,過程填充,行17 關鍵字'from'附近的語法不正確。 –

+0

我們需要更多的信息來提供更有意義的答案。請編輯問題,並提供有關數據模式的信息,關於過程的作用,錯誤消息等.SO社區非常適合解決問題,但仍然必須正確描述問題。 – SWeko

+0

我發佈了整個代碼 –

1

看來你首先發布了一段代碼,讓錯誤Msg 137, Level 15, State 2, Line 11 Must declare the scalar variable "@branch".再後來補充說,給出了錯誤的完整過程Msg 156, Level 15, State 1, Procedure insertion, Line 13 Incorrect syntax near the keyword 'from'.

請確認您發佈真正的代碼,你」有困惑的事重新使用和完整的錯誤信息,否則人們不能幫助你。

無論如何,我忽略了代碼片段,只看過程,並且ABFORCE說,問題在於你填充@result,因爲你的語法是錯誤的。這個程序代碼沒有錯誤解析SQL Server 2008中:

CREATE PROCEDURE insertion @id varchar(50), @brch varchar(50) 
    -- Add the parameters for the stored procedure here 

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

    -- Insert statements for procedure here 
    select @result = COUNT(*) from populate 

    if (@result > 1) 
    Begin 
     insert into populate (brch, terminal_id) values(@id, @brch) 
    end 
    END 
    GO 

您可能要審查assigning values to variables文檔和SET關鍵字。

0

試試這個

select @result =COUNT(*) from populate