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

我可以从存储过程中查询参数和“选定”列名吗?

  •  1
  • Nescio  · 技术社区  · 16 年前

    3 回复  |  直到 16 年前
        1
  •  1
  •   MikeW    16 年前

    您可以从以下位置获取参数

    select c.* 
    from syscolumns c
    inner join sysobjects o on o.id = c.id 
    where o.type = 'P' and o.name = '<storedProcName>'
    

    正如Marc所说,返回值很棘手。你本可以

    if (...)
         select * from Customers
    else
         select * from CustomerOrders
    

    所以,在那里不会有太大的成功。当然,我不知道什么样的人会写这样的东西,或者为什么,但这是可能的,所以。。。

        2
  •  0
  •   Marc Gravell    16 年前

    参数应该在元数据表中可用(我似乎记得它们甚至可能在proc的object_id的syscolumns中)。或者 info-schemas .

    然而,结果是骗人的,因为SP没有非常正式的输出。UDF具有更强的元数据。使用SP(它仍然是hit'nmiss)可以做的最好的事情是将FMT_ONLY设置为ON,并执行它,希望它不使用任何扩展存储过程。..

        3
  •  0
  •   Learning    16 年前

    sp_help 可以提供存储过程的参数(以及它们的数据类型)