如何从 SQL Server 2014 中的 Select 查询中将数据分配给用户定义的表类型

Posted

技术标签:

【中文标题】如何从 SQL Server 2014 中的 Select 查询中将数据分配给用户定义的表类型【英文标题】:How to assign data to a user-defined table type from Select query in SQL Server 2014 【发布时间】:2015-10-08 10:45:41 【问题描述】:

我有一个从多个表中检索三列的存储过程。我想在用户定义的多值表中获取结果并将变量传递给另一个过程以对变量数据执行操作。但是它不起作用。我有以下代码。知道为什么它不起作用吗?

--This is the initial stored procedure
Create Procedure spSelectData
AS
BEGIN
    Select 
        Userid, first_date, last_update
    From Users
END

--This is to create the table type.
Create type Task1TableType AS TABLE
(
     Userid nvarchar(20),
     First_date datetime,
     Last_update datetime
)

--Declare a table of type 
DECLARE @firstStep AS Task1TableType
(
    Userid nvarchar(20),
    First_date datetime,
    Last_update datetime
)

Insert @firstStep EXEC spSelectData

Select * from @firstStep

-- This is the procedure 1
CREATE PROC spTest1
   @TTType Task1TableType READONLY
AS
BEGIN
    Select * from @TTType
END

【问题讨论】:

什么不起作用,是错误吗? 显示你的`EXECUTE spTest1`语句。 【参考方案1】:

问题出在这里:

DECLARE @firstStep AS Task1TableType
(
    Userid nvarchar(20),
    First_date datetime,
    Last_update datetime
)


Insert @firstStep
EXEC spSelectData;

应该是:

DECLARE @firstStep AS Task1TableType;

Insert INTO @firstStep
EXEC spSelectData;

EXEC spTest1
  @firstStep;

不需要定义定义类型的列,INSERT 需要INTO 子句。更改之后,您的代码就可以工作了。

SqlFiddleDemo

【讨论】:

以上是关于如何从 SQL Server 2014 中的 Select 查询中将数据分配给用户定义的表类型的主要内容,如果未能解决你的问题,请参考以下文章

如何从 sql server 将数据导入 mongodb?

如何从 SQL Server SELECT 语句返回新的 IDENTITY 列值?

从 Android Studio 连接到 SQL Server 2014

EXISTS(sql server 2014)不引入子查询时,选择列表中只能指定一个表达式

从 phpmyadmin 导出到 sql server 2012

可以在 SQL Server 2012 上恢复 SQL Server 2014 的备份吗?