首页 > 解决方案 > 如何使用在 INSERT 语句中返回表的函数?

问题描述

我有一个返回 5 列(地址)作为表格的函数。我需要使用结果插入另一个表:

    INSERT INTO mytable
        (col1, address1, address2, address3, address4, address5)
    SELECT 
        Id, HouseNo, Street, PostCode, City, Country
    FROM @someTableType
    JOIN dbo.GetAddress(@customerId);

Id列来自@someTableType。其余列由函数返回。

但上述不起作用。

正确的方法是什么?

标签: sqlsql-serversql-server-2016

解决方案


将您的查询更改为此

INSERT INTO mytable
        (col1, address1, address2, address3, address4, address5)
    SELECT 
        someTableType.Id, adress.HouseNo, adress.Street, adress.PostCode, adress.City, 
    adress.Country
    FROM @someTableType
    Cross Apply dbo.GetAddress(@customerId) as adress; 

但是你有改变函数,因为它总是返回相同的结果,因为@customerId 总是有一个值


推荐阅读