是否可以使用多个表值参数调用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”
在这种情况下,存储过程可以接受多个参数,并且用户定义的类型参数与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
过的变量,一旦发现该变量对该变量使用了不同的名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句