`

Use Parameters with OPENQUERY in SQL

阅读更多

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 OPENQUERY 传参数

    在SQL Server中,`OPENQUERY` 是一个非常实用的Transact-SQL语句,它允许我们从外部数据源,如ODBC数据源,执行动态SQL查询。`OPENQUERY` 的优势在于可以方便地处理分布式查询,尤其是在需要跨数据库系统进行数据...

    分布式查询OPENQUERY

    在Microsoft SQL Server中,OPENQUERY特别适用于需要从多个异构数据库系统中提取数据的场景,如从Oracle、MySQL或其他SQL Server实例中获取信息。 #### 二、OPENQUERY基本语法与原理 **OPENQUERY**的基本语法结构...

    Microsoft SQL 2007年认证试题(英文PDF版)

    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语句实现跨Sql server数据库操作实例

    为了能够在SQL Server中使用`OPENQUERY`或`OPENDATASOURCE`等功能来执行跨服务器查询,需要确保SQL Server实例允许执行Ad Hoc分布式查询。这可以通过修改`AdHocDistributedQueries`选项来实现: 1. **显示高级选项*...

    SQL SERVER连接oracle数据库几种方法

    OPENQUERY 是 SQL Server 中的一个系统存储过程,用于执行远程查询。我们可以使用 OPENQUERY 来连接 Oracle 数据库。下面是一个示例代码: ```sql SELECT * FROM OPENQUERY(GE160, 'SELECT * FROM DAIMIN.JOBS') `...

    SQLSERVER访问MYSQL表中文显示成乱码.pdf

    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...

    sqlserver中访问ORACLE返回1行数据

    当在 SQL Server 环境中通过 OPENQUERY 查询 Oracle 数据库时,正常情况下应该返回多行数据的结果集。但是用户却发现实际结果只返回了第一行数据,而忽略了其余行的数据。这一问题不仅影响了数据的完整性,还可能...

    SQL-SERVER-64位配置ORACLE连接-中文乱码问题

    SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET'; ``` 这将返回数据库的字符集设置,例如`AL32UTF8`。 ##### 步骤2:配置Oracle客户端的NLS_LANG 1. **修改环境变量**: - 打开...

    通过SQL Server操作MySQL的步骤和方法

    "SQL Server 操作 MySQL 的步骤和方法" 在多种数据库环境下,经常会遇见在不同数据库之间转换数据和互相进行操作的情况。下面是使用 SQL Server 操作 MySQL 的步骤和方法的详细说明: 1. 操作前的准备 在 SQL ...

    Oracle10g US7ASCII 编码中文无法导入sqlserver问题解决

    4. **执行 OPENQUERY**:最后,在 SQL Server 中使用 `OPENQUERY` 函数查询 Oracle10g 中的数据,并通过 `utl_raw.cast_to_varchar2` 函数将 RAW 格式的中文数据转换回 VARCHAR2 格式,以确保数据能够被正确读取。...

    sql server 从一个数据库复制一张表到另外一个数据库

    openquery 是 SQL Server 中的一种分布式查询机制,可以用来从远程服务器上的数据库中查询数据。使用以下语句可以从远程服务器上的数据库中查询数据: exec sp_addlinkedserver 'ITSV', '', 'SQLOLEDB', '远程...

    数据库分布式查询sqlserver

    @useself = 'FALSE', @locallogin = NULL, @rmtuser = 'sql_user', @rmtpassword = ''; ``` **删除链接服务器示例:** ```sql EXEC sp_dropserver @server = 'srv_lnk', @droplogins = 'droplogins'; `...

    如何连接SQL数据库

    在IT领域,数据库是存储和管理数据的核心工具,SQL(Structured Query Language)是最常见的关系型数据库语言,而Access则是微软公司推出的一种桌面级数据库管理系统。本文将深入探讨如何连接SQL数据库,同时也会...

    基于SQL Server链接服务器实现Proficy Historian数据库的访问.pdf

    - 通过链接服务器访问其他数据库系统时,SQL Server实例可以通过OpenQuery函数调用其他服务器上的SQL语句,并获得查询结果。 4. SQL Server对Proficy Historian数据库的访问和数据整合方法 - 文章通过实例展示了...

    mysql 查询存储过程的 sql 语句.docx

    MySQL 存储过程是一种存储在 MySQL 服务器中的 SQL 代码段,它能够被多个客户端多次调用。存储过程的主要优势在于能够简化复杂的 SQL 查询,执行常见的任务,以及实现数据逻辑。通过使用存储过程,开发者可以在一次...

    解决字符长度8000限制

    bcp DatabaseName.dbo.TableName in C:\Data.txt -S ServerName -U UserName -P Password ``` #### 结论 两种方法各有优缺点。分批次执行SQL的方法更适用于需要进行复杂查询的情况,但需要额外编写代码来管理分...

    SQLSERVER远程访问Access数据库

    "SQLSERVER 远程访问 Access 数据库" SQLSERVER 远程访问 Access 数据库是指使用 SQLSERVER 连接和操作远程的 Access 数据库。这个技术可以帮助开发者和数据库管理员更方便地管理和维护分布式的数据库系统。在本文...

    SQLPrompt_7.3.0.651(包含注册机)

    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调用WebService方法

    在SQL Server 2005中调用WebService方法是一种集成外部服务到数据库操作中的技术,这对于数据交互和扩展SQL Server的功能至关重要。以下将详细介绍如何实现这一功能,以及相关的知识点。 一、理解SQL Server与Web ...

    通过SQL2005链接服务器访问ORACLE

    ### 通过SQL Server 2005链接服务器访问Oracle #### 一、概述 随着企业信息化建设的发展,异构数据库间的交互变得越来越普遍。本文档将详细介绍如何在SQL Server 2005环境中通过创建链接服务器来访问Oracle 10G...

Global site tag (gtag.js) - Google Analytics