【问题标题】:How to use a function that returns a table within an INSERT statement?如何使用在 INSERT 语句中返回表的函数?
【发布时间】:2018-09-12 12:44:26
【问题描述】:

我有一个将 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。其余列由函数返回。

但是上面的行不通。

正确的方法是什么?

【问题讨论】:

  • 没有ONJOIN 是一个错误(CROSS JOIN 除外)。 是否有一些逻辑可以匹配@someTableType 中的行和GetAddress 返回的行之间的行?
  • 请扩展“不起作用”。也许你想要cross apply, not join`

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


【解决方案1】:

将您的查询更改为此

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 总是有一个值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2023-01-02
    • 2017-12-19
    • 2016-07-02
    相关资源
    最近更新 更多