OPENQUERY в табличной функции с параметрами - PullRequest
0 голосов
/ 20 января 2020

Я новичок в использовании 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 '+'.)

Может кто-нибудь помочь мне с этим? Я уже пробовал другое решение, но оно никогда не работает.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Согласно этому ответу , OPENQUERY не принимает переменные для своих аргументов.

Но в этом ответе есть обходной путь.

0 голосов
/ 20 января 2020

Попробуйте

WHERE s.posting_date = ''' + @postingdate +'''

Кроме того, что должна делать :: date? Я не знаком с этой аннотацией.

...