从 Microsoft SQL Server 搜索链接服务器 (Oracle) 中的列名 [重复]

Posted

技术标签:

【中文标题】从 Microsoft SQL Server 搜索链接服务器 (Oracle) 中的列名 [重复]【英文标题】:Search Column name in Linked Server (Oracle) from Microsoft SQL Server [duplicate] 【发布时间】:2020-01-08 10:23:11 【问题描述】:

我需要从 Linked Oracle Database 中检索表名,该数据库位于 Linked Server with Microsoft SQL Server 上。

例如我可以使用以下方法在 SQL Server 中获取表名:

SELECT TABLE_NAME, COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%TELEPHONE%'

但是,我需要 Oracle 代码。 我正在使用 Microsoft SQL Server 与 Oracle 的链接服务器。

【问题讨论】:

您需要 Oracle 代码来做什么?你在 oracle 代码中的查询是什么? 嗨,用于检索 Oracle 表名的 SQL 查询 已排序。谢谢。 SELECT * FROM OPENQUERY(ORACLE_DB_NAME,'SELECT table_name, column_name FROM cols WHERE column_name LIKE ''%TELEPHONE%''') 【参考方案1】:
SELECT 
     * 
FROM 
     OPENQUERY(ORACLE_DB_NAME,'
          SELECT 
               table_name, 
               column_name 
          FROM 
               cols 
          WHERE 
               column_name LIKE ''%TELEPHONE%'''
      )

根据您的评论“Hi, SQL Query to retrieve Oracle Table Names”,您可以执行以下操作:

SELECT 
     table_name, 
     column_name
FROM 
     cols
WHERE 
     column_name LIKE '%TELEPHONE%';

【讨论】:

【参考方案2】:

您可以使用USER_TAB_COLSALL_TAB_COLS 查看它。有关此视图的更多信息,请参阅 oracle 文档

SELECT TABLE_NAME, COLUMN_NAME 
FROM USER_TAB_COLS 
WHERE UPPER(COLUMN_NAME) LIKE '%TELEPHONE%';

UPPERWHERE 子句中使用,因为如果名称是用双引号创建的,则区分大小写,如果不带引号,则不区分大小写。

干杯!!

【讨论】:

以上是关于从 Microsoft SQL Server 搜索链接服务器 (Oracle) 中的列名 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

登录 Microsoft SQL Server 错误:18456

text 从命令行打开Microsoft SQL Server Management Studio

Microsoft SQL Server 2014 的 Hibernate 方言是啥?

将数据从SQL Server导出到Microsoft Excel数据表

Microsoft SQL Server 从选择查询插入

从 SQL Server 查询“Microsoft.ACE.OLEDB.12.0”提供程序时出错