首页 > 解决方案 > 如何在存储过程的打开查询中添加变量

问题描述

我有一个接收存储 id 参数的存储过程。我需要将该变量添加到 openquery tsql 脚本中我无法做到这一点。在我的代码中查看它说@var 那是变量需要工作的地方

我试图参考这个https://support.microsoft.com/en-us/help/314520/how-to-pass-a-variable-to-a-linked-server-query但我无法让它工作

SELECT x.*
FROM (
    SELECT tl.title_log_sts_cd
        ,tl.ro_vin
        ,tl.ro_store_id
        ,ll.CurrentLoanStatus
        ,bc.vin
        ,bc.BorrowerId
        ,ll.DisplayLoanNumber
        ,CONVERT(DATE, CONVERT(VARCHAR(10), ll.CreateDateKey, 7)) LoanDate
        ,CONCAT (
            bb.LastName
            ,','
            ,bb.FirstName
            ) CustomerName
        ,ll.CurrentPrincipalBalanceAmt + ll.CurrentFeeBalanceAmt TotalDue
    FROM OPENQUERY(TLXPRD, 'SELECT * FROM TITLE_LOG 
 WHERE title_log_sts_cd in (''Ready to Send to DMV'', ''Sent to DMV'') 
 and ro_store_id =@VAR ') AS tl
    JOIN EIS.Borrower.Collateral bc WITH (NOLOCK) ON tl.ro_vin = bc.Vin
    LEFT JOIN eis.loan.loan ll WITH (NOLOCK) ON ll.BorrowerId = bc.BorrowerId
        AND convert(DATE, tl.created_ts) = CONVERT(DATE, CONVERT(VARCHAR(10), ll.CreateDateKey, 7))
    LEFT JOIN EIS.Borrower.Borrower BB ON bb.borrowerid = ll.BorrowerId
    ) AS x
ORDER BY vin

期望从 oracle 中获取一些数据,并使用 tsql 将其加入

标签: sql-servertsqlopenquery

解决方案


我没有完全明白你想要做什么,但我希望这就是你想要的。

 FROM OPENQUERY(TLXPRD, concat( 'SELECT * FROM TITLE_LOG 
 WHERE title_log_sts_cd in (''Ready to Send to DMV'', ''Sent to DMV'') 
 and ro_store_id =', cast(@VAR as nvarchar(50) ) ))

基本上,你的字符串中有你的变量,但你想把它作为一个值。所以我们得到值并将其放入您的字符串中。


推荐阅读