/ / SQL Serverストアドプロシージャの複数のテーブル型パラメータ - sql、sql-server、tsql

SQL Serverストアドプロシージャの複数のテーブル型パラメータ - sql、sql-server、tsql

複数のテーブル値のパラメータを持つ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 その変数がその変数に別の名前を使用していることがわかったら