如何在SQL中的存储过程中使用单个列传递多个行

时间:2017-11-15 07:37:05

标签: sql sql-server-2016 ssms-2016

如何使用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。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

1 个答案:

答案 0 :(得分:1)

没有标准的方法可以做到这一点。 最常见的方法是: 1)创建逗号分隔的字符串,将其作为参数传递,并在过程中将字符串拆分为表。周围有许多字符串拆分函数,最好使用不使用循环的函数。我认为最新版本的SQL Server也有字符串拆分功能。 2)传递一个表值参数,如下所述:How to pass a table-value parameter