在INFORMATION_SCHEMA.ROUTINES视图中,ROUTINE_NAME和SPECIFIC_NAME存在。根据{{3}},它们是相同的。它们只是为了某些种类的向后兼容吗?如果不是为什么视图中包含冗余字段?
答案 0 :(得分:9)
ANSI SQL标准不禁止重载,即两个具有相同名称的对象。 SPECIFIC_NAME是重载模块的唯一名称,而ROUTINE_NAME不保证是唯一的。无论您何时看到SPECIFIC,例如SPECIFIC_CATALOG和SPECIFIC_SCHEMA,都是如此。
T-SQL没有此功能,因此SPECIFIC_NAME和ROUTINE_NAME始终相同。
我所知道的唯一支持此功能的SQL实现是PostgreSQL(参见此处:http://www.postgresql.org/docs/current/interactive/infoschema-routines.html),但我可能错了。我的Oracle生锈了。
我不完全确定SPECIFIC_CATALOG如何工作,尽管我认为它可能包含一些路径或服务器信息,以区分具有相同名称的两个不同数据库。