sql-server - 如何在存储过程的打开查询中添加变量
问题描述
我有一个接收存储 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 将其加入
解决方案
我没有完全明白你想要做什么,但我希望这就是你想要的。
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) ) ))
基本上,你的字符串中有你的变量,但你想把它作为一个值。所以我们得到值并将其放入您的字符串中。
推荐阅读
- python - 如何在没有 Numpyt 的情况下在 2d python 数组中求和
- angular-cli - ng gs nameService --module=module 在 Angular 10 中不起作用
- python - 如何将“collate_fn”与数据加载器一起使用?
- ruby - Ruby on the Rails - Puma 服务器错误在 Heroku 计划维护后没有提供太多
- angular - 当 url 有多个与“&”连接的变量时,如何重定向到 Angular 中的某个组件?
- sass - 如何使用 @use 引用引导 scss 变量?
- node.js - 我应该在 cms 和应用程序之间共享相同的 api 吗?
- reactjs - React Router Navbar 背景更改仅适用于 pages 文件夹,但不适用于 App.js?
- flutter - 在 Flutter 中执行之前等待所有异步函数完成
- git - 当进行子树合并并且没有共同的祖先时,git可以猜测合并基础是什么?