複数のテーブル値のパラメータを持つT-SQL(SQL Server 2012)ストアドプロシージャを呼び出すことは可能ですか?
私。
CREATE Type dbo.P1 AS TABLE
(
Id Int NOT NULL,
Name nvarchar(50) NULL
)
CREATE Type dbo.P2 AS TABLE
(
Id Int NOT NULL,
Name nvarchar(50) NULL
)
CREATE PROCEDURE [dbo].[D]
(
@id0 Int,
@P1 dbo.P1 READONLY,
@P2 dbo.P2 READONLY
)
AS
...
私はエラーが発生しています
スカラー変数 "@ P2"を宣言しなければなりません
回答:
回答№1は1ストアドプロシージャは複数のパラメータを受け入れることができ、ユーザー定義の型のパラメータは、この場合はSQL Serverのシステム型のパラメータと異なるものではありません。
次のコードだけを実行すると、エラーなしでプロシージャを作成することができます.SQL Serverでは、複数のユーザー定義型パラメータを受け入れるプロシージャを作成できます。
--------------------Test ---------------------------------
CREATE Type dbo.P1 AS TABLE
(
Id Int NOT NULL,
Name nvarchar(50) NULL
)
GO
CREATE Type dbo.P2 AS TABLE
(
Id Int NOT NULL,
Name nvarchar(50) NULL
)
GO
CREATE PROCEDURE [dbo].[D]
(
@id0 Int,
@P1 dbo.P1 READONLY,
@P2 dbo.P2 READONLY
)
AS
BEGIN
SET NOCOUNT ON;
SELECT "Debugging";
END
GO
エラーは、宣言されていない変数を使用しようとしているコードのどこかに存在します。既に変数があります @P2
その変数がその変数に別の名前を使用していることがわかったら