【发布时间】:2020-01-20 04:01:37
【问题描述】:
我是使用 OPENQUERY 的新手,在表值函数中使用它时遇到问题,下面是我的查询
INSERT INTO @returnList
SELECT *
FROM OPENQUERY(lnk_db, 'SELECT s.posting_date -COALESCE(max(a.due_date::date), l.grant_date) as loan_age
FROM ln.loan_snapshot_active s
INNER JOIN ln.loan_active l ON l.id = s.loan_id
LEFT JOIN ln.amortization_schedule a ON a.loan_id = l.id
AND a.status = ''PAID''
AND a.due_date < s.posting_date
WHERE s.posting_date = ''2020-01-07''::date
GROUP BY l.id, s.posting_date, l.grant_date');
当我直接把日期放在where s.posting_date = ''2020-01-07''::date时效果很好
但是当我动态接近它时,我总是遇到错误。
我必须通过用户选择的日期,我这样做
WHERE s.posting_date = ''''' +@postingdate+'''''::date
但我总是遇到错误。 (在这段代码中我遇到了一个错误,指出Incorrect syntax near '+'.)
谁能帮我解决这个问题?我已经尝试过其他解决方案,但它从来没有奏效。
提前致谢
【问题讨论】:
-
请编辑您的问题并包含您遇到的错误。您收到错误消息了吗?
-
OPENQUERY既不支持参数也不支持表达式。您必须动态构建涉及OPENQUERY的整个 查询。考虑使用INSERT ... EXECUTE (...) AT ...,它确实支持参数,尽管只使用?占位符语法。 -
@JeroenMostert 先生有什么替代方案可以代替使用 openquery 吗?
标签: sql-server sql-server-2008 table-valued-parameters openquery