【问题标题】:SQL Server CTE with function insideSQL Server CTE 内含函数
【发布时间】:2014-04-03 11:42:07
【问题描述】:

我需要做以下事情:

  1. 我已经有了名称为 CONNECT 的函数,其参数为 @table,类型为 table

  2. 我需要将m2.ID 分配给@c 变量,然后分配select * from result of CONNECT( @c ) 函数。变量@a@b 已提前声明和设置。

代码:

declare @c cat;

insert into @c 
  select m2.ID

select 
    m1.nazwa, @a poczatek, m2.ID, m2.nazwa, @b koniec, m3.nazwa
from 
    miasta m1 
inner join 
    miasta m2 on (m1.ID <= m2.ID and m1.ID = @a)
inner join 
    miasta m3 on (m3.ID >= m2.ID and m3.ID = @b)

编辑:我不知道为什么我的代码没有出现在代码块中。

【问题讨论】:

  • 您的代码没有出现在代码块中,因为您在其上方有一个编号列表(1.2.)。我插入了一个简单的行Code: 并解决了它。如果您要在编号内格式化代码或 XML,则需要将其缩进 8 个字符(不仅仅是 4
  • 感谢您编辑和改进我的代码,也很抱歉不小心破坏了它。感谢您的解释:)

标签: sql-server function tsql inner-join


【解决方案1】:

我不知道您用来定义@c 的cat 是什么类型。那么,您是否正在尝试做这样的事情?

编辑:正如您提到的cat 是表类型,您可以将ID 插入@c 变量,并将该变量传递给CONNECT 函数。

也不确定cat 类型的变量是否会与table 类型参数的函数一起使用。您可能需要更新函数CONNECT 以接收cat 类型的变量而不是table。检查这里的链接

http://www.techrepublic.com/blog/the-enterprise-cloud/passing-table-valued-parameters-in-sql-server-2008/168/

http://www.sailajareddy-technical.blogspot.in/2012/09/passing-table-valued-parameter-to.html

declare @c cat;

insert into @c
select m2.ID
from miasta m1 
inner join miasta m2 on (m1.ID <= m2.ID and m1.ID = @a)
inner join miasta m3 on (m3.ID> = m2.ID and m3.ID = @b)

SELECT * FROM dbo.CONNECT(@c)

如果这不是您需要的,请详细说明您的问题。

希望这会有所帮助。

【讨论】:

  • cat 是具有 1 列 INT 类型的表类型 :) 我试图在短时间内解释我需要什么。向我 +1,谢谢
猜你喜欢
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 2017-01-17
  • 2012-04-23
  • 2019-08-28
相关资源
最近更新 更多