【问题标题】:Get alias column name of procedure in SQL获取SQL中过程的别名列名
【发布时间】:2014-03-28 15:50:36
【问题描述】:

I 正在使用如下系统过程从过​​程中获取Column Name

exec Sp_depends @procedure-name

但它没有返回别名列名。

我在程序中有以下查询。

SELECT ID, E_No As E_No, Case When E_SAL BETWEEN 10000 AND 50000 THEN 1 ELSE 0 END E_ACTIVE
FROM E_MAST
WHERE E_SAL BETWEEN 10000 AND 50000"

我需要所有列,包括别名列,但我无法返回别名。 如何从过程中返回别名列名?

当前结果是:

**name         type   updated selected  column**
dbo.E_MAST  user table  no      yes       ID
dbo.E_MAST  user table  no      yes       E_NO
dbo.E_MAST  user table  no      yes       E_SAL

我需要这个结果:

**name         type   updated selected  column**
dbo.E_MAST  user table  no      yes       ID
dbo.E_MAST  user table  no      yes       E_NO
dbo.E_MAST  user table  no      yes       E_SAL
dbo.E_MAST  user table  no      yes       E_ACTIVE

【问题讨论】:

  • 我不太清楚你想要什么。你能举例说明它应该如何工作吗?
  • 上述查询正在处理中。 [dbo].[sp_getempsal].. 当我执行以下查询以获取过程 Exec sp_depends 'sp_getempsal' 中使用的列时,我无法获得 E_ACTIVE 列名。
  • 我只返回 ID E_NO E_SAL 但没有 E_ACTIVE

标签: sql sql-server stored-procedures


【解决方案1】:

sp_depends存储过程用于

显示有关数据库对象依赖关系的信息,例如依赖于表或视图的视图和过程,以及视图或过程所依赖的表和视图。

因此它可以正确识别您的存储过程所依赖的所有列。 E_ACTIVE 是别名,它不是数据库对象,所以不能依赖它。


您还可以查看此问题及其答案:Retrieve column definition for stored procedure result set,了解如何获取有关存储过程的元数据。

【讨论】:

  • 另请注意sp_depends 将来会被删除,所以最好不要在新代码中依赖它。
  • 感谢亲爱的回复。有其他方法来获取该列名吗?
  • 查看我在回答中链接的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-02
  • 2015-04-11
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多