-4

如何在 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 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。

4

1 回答 1

1

没有标准的方法可以做到这一点。最常见的方法是: 1) 制作一个逗号分隔的字符串,将其作为参数传递,然后在过程中将字符串拆分为表格。周围有很多字符串拆分函数,最好使用不使用循环的函数。我认为最新版本的 SQL Server 还具有字符串拆分功能。2)传递表值参数,如下所述:如何传递表值参数

于 2017-11-15T07:49:44.360 回答