Unfortunately, in the Microsoft SQL world, sometimes you have to deal
with using OPENQUERY. This is difficult to use sometimes because you
don't have as much flexibility with variables and parameters as you
would using normal T-SQL. Below is an example of how you can use
OPENQUERY and still utilize a variable or parameter.
DECLARE @variable VARCHAR(10)
DECLARE @sqlQuery VARCHAR(8000)
DECLARE @finalQuery VARCHAR(8000)
SET @variable = 'yourStringValue'
SET @sqlQuery = 'SELECT * FROM tableName WHERE strValue = ' + '''' + '''' + @variable + '''' + ''''
SET @finalQuery = 'SELECT * FROM OPENQUERY(LINKEDSERVER,' + '''' + @sqlQuery + '''' + ')'
--used for debugging
SELECT @finalQuery
EXEC(@finalQuery)
NOTE: It may be hard to see but the '''' is 4 single quotes
I recommend commenting out EXEC(@finalQuery) until you see @finalQuery
correctly in the results. Running SELECT @finalQuery is very helpful
because you can see what single quotes are missing if need be.
I also recommend getting your OPENQUERY statement to work correctly
before trying to make it "dynamic" so to say using the above method.
Anyway, I found this very useful to use and hope that it can help some others out there.
分享到:
相关推荐
在SQL Server中,`OPENQUERY` 是一个非常实用的Transact-SQL语句,它允许我们从外部数据源,如ODBC数据源,执行动态SQL查询。`OPENQUERY` 的优势在于可以方便地处理分布式查询,尤其是在需要跨数据库系统进行数据...
在Microsoft SQL Server中,OPENQUERY特别适用于需要从多个异构数据库系统中提取数据的场景,如从Oracle、MySQL或其他SQL Server实例中获取信息。 #### 二、OPENQUERY基本语法与原理 **OPENQUERY**的基本语法结构...
You use the `OPENQUERY` Transact-SQL statement within the stored procedure to access data from SQL2, but the query fails when executed. **Question:** What should you do to troubleshoot the cause of ...
为了能够在SQL Server中使用`OPENQUERY`或`OPENDATASOURCE`等功能来执行跨服务器查询,需要确保SQL Server实例允许执行Ad Hoc分布式查询。这可以通过修改`AdHocDistributedQueries`选项来实现: 1. **显示高级选项*...
OPENQUERY 是 SQL Server 中的一个系统存储过程,用于执行远程查询。我们可以使用 OPENQUERY 来连接 Oracle 数据库。下面是一个示例代码: ```sql SELECT * FROM OPENQUERY(GE160, 'SELECT * FROM DAIMIN.JOBS') `...
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.216' IDENTIFIED BY 'yxtech' WITH GRANTOPTION; ``` 这里,'root'是MySQL的用户名,'192.168.1.216'是SQL Server的IP地址,'yxtech'是密码。 2. **设置ODBC...
当在 SQL Server 环境中通过 OPENQUERY 查询 Oracle 数据库时,正常情况下应该返回多行数据的结果集。但是用户却发现实际结果只返回了第一行数据,而忽略了其余行的数据。这一问题不仅影响了数据的完整性,还可能...
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET'; ``` 这将返回数据库的字符集设置,例如`AL32UTF8`。 ##### 步骤2:配置Oracle客户端的NLS_LANG 1. **修改环境变量**: - 打开...
"SQL Server 操作 MySQL 的步骤和方法" 在多种数据库环境下,经常会遇见在不同数据库之间转换数据和互相进行操作的情况。下面是使用 SQL Server 操作 MySQL 的步骤和方法的详细说明: 1. 操作前的准备 在 SQL ...
4. **执行 OPENQUERY**:最后,在 SQL Server 中使用 `OPENQUERY` 函数查询 Oracle10g 中的数据,并通过 `utl_raw.cast_to_varchar2` 函数将 RAW 格式的中文数据转换回 VARCHAR2 格式,以确保数据能够被正确读取。...
openquery 是 SQL Server 中的一种分布式查询机制,可以用来从远程服务器上的数据库中查询数据。使用以下语句可以从远程服务器上的数据库中查询数据: exec sp_addlinkedserver 'ITSV', '', 'SQLOLEDB', '远程...
@useself = 'FALSE', @locallogin = NULL, @rmtuser = 'sql_user', @rmtpassword = ''; ``` **删除链接服务器示例:** ```sql EXEC sp_dropserver @server = 'srv_lnk', @droplogins = 'droplogins'; `...
在IT领域,数据库是存储和管理数据的核心工具,SQL(Structured Query Language)是最常见的关系型数据库语言,而Access则是微软公司推出的一种桌面级数据库管理系统。本文将深入探讨如何连接SQL数据库,同时也会...
- 通过链接服务器访问其他数据库系统时,SQL Server实例可以通过OpenQuery函数调用其他服务器上的SQL语句,并获得查询结果。 4. SQL Server对Proficy Historian数据库的访问和数据整合方法 - 文章通过实例展示了...
MySQL 存储过程是一种存储在 MySQL 服务器中的 SQL 代码段,它能够被多个客户端多次调用。存储过程的主要优势在于能够简化复杂的 SQL 查询,执行常见的任务,以及实现数据逻辑。通过使用存储过程,开发者可以在一次...
bcp DatabaseName.dbo.TableName in C:\Data.txt -S ServerName -U UserName -P Password ``` #### 结论 两种方法各有优缺点。分批次执行SQL的方法更适用于需要进行复杂查询的情况,但需要额外编写代码来管理分...
"SQLSERVER 远程访问 Access 数据库" SQLSERVER 远程访问 Access 数据库是指使用 SQLSERVER 连接和操作远程的 Access 数据库。这个技术可以帮助开发者和数据库管理员更方便地管理和维护分布式的数据库系统。在本文...
Ole db provider names are now suggested for OPENROWSET and OPENQUERY Fix for incorrectly qualifying a column using the xml "modify" method (Forum post) Fix for syntax error being introduced when ...
在SQL Server 2005中调用WebService方法是一种集成外部服务到数据库操作中的技术,这对于数据交互和扩展SQL Server的功能至关重要。以下将详细介绍如何实现这一功能,以及相关的知识点。 一、理解SQL Server与Web ...
### 通过SQL Server 2005链接服务器访问Oracle #### 一、概述 随着企业信息化建设的发展,异构数据库间的交互变得越来越普遍。本文档将详细介绍如何在SQL Server 2005环境中通过创建链接服务器来访问Oracle 10G...