【问题标题】:T-SQL OPENQUERY instead of SSIS packageT-SQL OPENQUERY 代替 SSIS 包
【发布时间】:2021-03-15 12:08:09
【问题描述】:

我有一个有效的 T-SQL OPENQUERY 连接到一个 KISAM ODBC 数据库表,它根据昨天日期的单个日期字段上的 where 子句返回预期的行数:

DECLARE @TSQL varchar(8000), @MyDate varchar(10)

SET @MyDate = CONVERT(varchar(10), (DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0)), 120)

SET @TSQL = 'SELECT * FROM OPENQUERY(KODBC_linked_server,''SELECT * from [table] WHERE date_column_1 = ''''' + @MyDate + ''''''')'

EXEC (@TSQL)

我需要扩展查询以在 where 子句中包含多个日期字段,但一直报错

用于链接服务器的 OLE DB 提供程序“MSDASQL”...

如何在 where 子句中传递多个日期字段?

【问题讨论】:

  • “我如何在 where 子句中传递多个日期字段?” 如果 KISAM 遵循与其他 RDBMS 相同的规则,并带有额外的 ANDOR 布尔子句,或一个`IN`,取决于你的目标是什么。似乎这里的问题是关于如何查询 KISAM 数据库而不是如何编写 T-SQL。
  • 这个KISAM工具有自己的查询工具吗?因为这里的问题是转义单引号的常见问题。
  • 发布完整的错误 - 全部,包括 id、严重性等。并且不要缩写/截断实际的错误消息 - 省略号 (...) 对任何人都没有帮助。
  • 感谢您的回复。拉努。是的,更多的是关于如何查询 KISAM 数据库。缺口。不是我知道或能找到的。摩尔。这是链接服务器“server”的完整错误 OLE DB 提供程序“MSDASQL”返回消息“[Kerridge][KISAM ODBC Driver][KISAM]syntax error in: from [table] where (col1 = @ >>> MyDate
  • KISAM 是否支持@MyDate 之类的变量?我猜不会。你需要找出答案。我想您需要输入日期文字而不是变量

标签: sql-server openquery


【解决方案1】:

感谢所有评论和提出建议的人。不幸的是,没有任何效果,而且客户已经让他们对原始数据库开发人员的支持失效,所以我无法继续这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多