4

以下の手順書の何が問題になっていますか?

    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
4

3 に答える 3

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構文が間違っているために入力する場所です。このプロシージャコードは、SQLServer2008でエラーなしで解析されます。

   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

変数SETキーワードに値を割り当てるためのドキュメントを確認することをお勧めします。

于 2012-12-14T12:27:12.033 に答える
0

問題は、エラー メッセージに示されているように、値が使用される前に@branchとがどこにも言及されていないことです。@atmid

あなたは宣言し@resultsetそれは価値があるので、同じことをする必要があり@branch@atmidシステムはあなたのために価値を推測することはできません.

于 2012-12-14T09:24:31.893 に答える
0

これを試して

select @result =COUNT(*) from populate
于 2013-07-11T06:42:08.347 に答える