mysql - 使用链接服务器将参数化动态查询从 SQL Server 传递到 MySQL 数据库时出现问题

标签 mysql sql-server dynamic linked-server parameterized-query

我正在尝试使用来自 SQL Server 数据库的链接服务器查询 MySQL 数据库。我创建了一个参数化的动态 SQL 查询,当我运行它时,它没有出错,但它返回 0 行。

如果我对参数进行硬编码,它会返回我请求的行的数据。

在参数化查询方面是否有处理 MySQL 的技巧?

此语法返回 0 行:

DECLARE @SQL NVARCHAR(MAX), 
        @Params VARCHAR(MAX)

SET @SQL = N'SELECT * FROM OPENQUERY(MYSQL, ''SELECT LoanNumber  
             FROM plms.vw__bid_dd_overlay 
             WHERE LoanNumber IN (@MyParams);'')'

SET @Params = '1000001289,1000001294,1000001296,1000001303,1000001304,1000001306,1000001308'; 

EXEC sp_executesql @SQL, N'@MyParams VARCHAR(MAX)', @Params

返回 7:

DECLARE @SQL NVARCHAR(MAX)

SET @SQL = N'SELECT * FROM OPENQUERY(MYSQL, ''SELECT LoanNumber  
                                              FROM plms.vw__bid_dd_overlay 
                                              WHERE LoanNumber IN  (1000001289,1000001294,1000001296,1000001303,1000001304,1000001306,1000001308);'')'

EXEC sp_executesql @SQL; 

如有任何帮助,我们将不胜感激。

最佳答案

你需要准备一个语句然后执行它:

SET @Params = '1000001289,1000001294,1000001296,1000001303,1000001304,1000001306,1000001308'; 

SET @SQL = CONCAT('SELECT LoanNumber  
         FROM plms.vw__bid_dd_overlay 
         WHERE LoanNumber IN (' , @MyParams , ' );';

PREPARE statement FROM @SQL;

EXECUTE statement;

Reference to the mySQL manual

关于mysql - 使用链接服务器将参数化动态查询从 SQL Server 传递到 MySQL 数据库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17532934/

相关文章:

python - django查询中的模数

php - Q : Edit New Password PHP Mysql

c# - 通过动态访问 ValueTuple 项时出现 RuntimeBinderException

jQuery:动态加载元素的大小/长度

javascript - 具有可变参数的 jQuery 动态函数

mysql - 有人能帮我解释为什么这段代码在 Mysql 中执行时在 c_orders (c_custkey, c_count) 处失败

php - 或者使用 php 插入更新 mysql 表值

sql - 身份主键是否应该始终非集群?

sql - 将日期四舍五入到该月的第一天

sql-server - 为什么 CATCH block 允许在 SQL Server 2012 中提交事务