如何使用SQL(SSMS)中的存储过程中的单个列传递多行? 要么 如何在过程中传递单个列值。
CREATE TYPE tblAge_Type as TABLE
(
ID int,
Age int
)
--------------------------------------------------------------------------------------
alter PROCEDURE spAddAge (
@datasource tblAge_Type READONLY)
AS
update tblAge set Age = (select Age from @datasource ) where Id = (select ID from @datasource )
GO
------------------------------------------------------------------------------------------
DECLARE @data AS tblAge_Type
INSERT into @data VALUES(1,22) ;
INSERT into @data VALUES(2,55) ;
INSERT into @data VALUES(3,44);
EXEC spAddAge @data
收到此错误:子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
答案 0 :(得分:1)
没有标准的方法可以做到这一点。 最常见的方法是: 1)创建逗号分隔的字符串,将其作为参数传递,并在过程中将字符串拆分为表。周围有许多字符串拆分函数,最好使用不使用循环的函数。我认为最新版本的SQL Server也有字符串拆分功能。 2)传递一个表值参数,如下所述:How to pass a table-value parameter