代码之家  ›  专栏  ›  技术社区  ›  Gideon

SQL Server 2008:多语句UDF能否返回UDT?[复制品]

  •  2
  • Gideon  · 技术社区  · 15 年前

    多语句UDF是否可能返回用户定义的表类型,而不是返回参数中定义的表?

    因此,而不是:

    CREATE FUNCTION MyFunc 
    (
        @p1 int, @p2 char
    )
    RETURNS 
    @SomeVar TABLE 
    (
        c1 int
    )
    AS
    

    我想这样做:

    CREATE FUNCTION MyFunc 
    (
        @p1 int, @p2 char
    )
    RETURNS 
    @SomeVar MyTableType
    AS
    

    这样做的原因是,在我的函数内部,我调用了其他函数,并且必须传入myTableType UDT,即使我在返回表类型中定义了完全相同的表定义,它也会引发操作数冲突错误。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Tom H zenazn    15 年前

    我能想到的最好的方法是在函数局部声明一个您所属类型的表变量,并在整个代码中使用它。然后在RETURN语句之前,在参数表中执行INSERT…SELECT。

    到目前为止,我已经避免使用用户定义的类型。虽然它们看起来很有希望,因为它们能够在一个位置更改类型,而不是在任何地方更改数据类型,但在生产力和维护方面,它们似乎从未提供过,因为这些问题。