1

@IDこれにより、と@Name言ってエラーが発生しますがMust declare the scalar variable、それがパラメーターである場合、その理由がわかりません。ここで何が間違っていますか?

  CREATE PROCEDURE [dbo].[Ins_eProductFull]
    @Name nvarchar(400)
    ,@ID int

    AS
  BEGIN

    DECLARE @ID2 int

    SET NOCOUNT ON;

    INSERT INTO Table (Name) VALUES (@Name)

    SET @ID2 = SCOPE_IDENTITY()

    EXEC dbo.StoredProc1 
      @ID = @ID, 
      @Name = @Name, 
      @ID2 = @ID2

  END
  GO
4

1 に答える 1

3

あなたのコードで私が目にする唯一の問題は、そこにあってはならない最初のコンマです。それ以外はすべて正常に動作します

編集:

反対票を投じた人は誰でも、自分の目で確かめてください:

create table Table1(Name varchar(50))

Create PROCEDURE [dbo].[Ins_eProductFull]
@Name nvarchar(400),
@ID int
AS
BEGIN
    DECLARE @ID2 int

    SET NOCOUNT ON;

    INSERT INTO Table1 (Name) VALUES (@Name)

    SET @ID2 = SCOPE_IDENTITY()

    EXEC dbo.StoredProc1 
      @ID = @ID, 
      @Name = @Name, 
      @ID2 = @ID2

END
GO

CREATE  procedure dbo.StoredProc1 
@ID int,
@Name varchar(50),
@ID2 int
as 
begin
    select @ID,@Name,@id2
end


exec [Ins_eProductFull] 'a',1

結果:

1   a   NULL

NULL は、テスト テーブルに ID がないためです。

于 2012-04-23T15:30:36.247 に答える