SQR-如何在开始选择中使用[动态表名称}?

发布于 2025-01-24 17:10:23 字数 1687 浏览 2 评论 0原文

我必须创建一个SQR,该SQR在过去几天中对养老金数据有任何更改,从而生成EEID列表。当我在表名称中进行硬码时,SQR编译并完美地工作。

但是,当我尝试将变量用于表名称时,我会收到一个编译错误 我粘贴了我要修复的SQR的部分 当我开始使用$ tableName和$ juadittablename作为表变量时,那是我遇到错误的时候,我不确定有什么问题

会有什么人可以提供帮助?

请并感谢您的

!***************************
begin-procedure Process-Main
!***************************  
let $tableName = 'PS_PENSION_PLAN'
let $auditTableName = 'PS_AUDIT_PENSION_PLN'    
let $dummy-dyn-variable = ''

begin-SELECT DISTINCT
L.EMPLID
L.EMPL_RCD

    do someProcName(&L.EMPLID, &L.EMPL_RCD)

FROM [$dummy-dyn-variable]
(
    SELECT DISTINCT
    PP.EMPLID,
    PP.EMPL_RCD,
    PP.EFFDT,
    '1901-01-01 12:00:00' AS AUDIT_STAMP
    FROM [$dummy-dyn-variable] [$tableName] PP
    UNION
    SELECT DISTINCT
    A.EMPLID,
    A.EMPL_RCD,
    A.EFFDT,
    A.AUDIT_STAMP
    FROM [$dummy-dyn-variable] [$auditTableName] A
)L
WHERE DATEDIFF(DAY,CAST(L.AUDIT_STAMP AS DATE),SYSDATE) = 1
ORDER BY 1,2
end-SELECT
   
end-procedure

编辑:

工会与此有关系吗? 我一直收到这个错误:

(SQR 5528) ODBC SQL dbdesc: SQLNumResultCols error 102 in cursor 1:
   [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'FROM'.
(SQR 5528) ODBC SQL dbdesc: SQLNumResultCols error 8180 in cursor 1:
   [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.

edit2:

好的,使用[$ dummy-dyn-variable]解决的初始问题,这导致了do命令的下一个问题。我已经使用 do do someprocname(param_a,param_b)更新了代码

我现在会遇到一个错误,说:

(SQR 2002) DO arguments do not match procedure's

奇怪的部分,如果我删除了动态表变量,并且在“ from”部分中的表名为“表”。然后它正确编译而没有错误。这使我相信该错误与我的 somenprocname (也许?)

我在这里错过了什么吗?

I have to create an SQR that generates a list of EEIDs, if there were any changes to the Pension data in the past day. The SQR compiles and works perfectly when I hardcode in the table names.

However, when I tried using variables for the table names, I get a compile error
I've pasted the portion of SQR that I'm trying to fix
When I start using $tableName and $auditTableName as table variables, that's when I get the error and I'm not sure what is going wrong

Can anyone help?

Please and Thank You

!***************************
begin-procedure Process-Main
!***************************  
let $tableName = 'PS_PENSION_PLAN'
let $auditTableName = 'PS_AUDIT_PENSION_PLN'    
let $dummy-dyn-variable = ''

begin-SELECT DISTINCT
L.EMPLID
L.EMPL_RCD

    do someProcName(&L.EMPLID, &L.EMPL_RCD)

FROM [$dummy-dyn-variable]
(
    SELECT DISTINCT
    PP.EMPLID,
    PP.EMPL_RCD,
    PP.EFFDT,
    '1901-01-01 12:00:00' AS AUDIT_STAMP
    FROM [$dummy-dyn-variable] [$tableName] PP
    UNION
    SELECT DISTINCT
    A.EMPLID,
    A.EMPL_RCD,
    A.EFFDT,
    A.AUDIT_STAMP
    FROM [$dummy-dyn-variable] [$auditTableName] A
)L
WHERE DATEDIFF(DAY,CAST(L.AUDIT_STAMP AS DATE),SYSDATE) = 1
ORDER BY 1,2
end-SELECT
   
end-procedure

Edit:

does the UNION have anything to do with this?
I keep receiving is this error:

(SQR 5528) ODBC SQL dbdesc: SQLNumResultCols error 102 in cursor 1:
   [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'FROM'.
(SQR 5528) ODBC SQL dbdesc: SQLNumResultCols error 8180 in cursor 1:
   [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.

Edit2:

Ok, initial problem solved with [$dummy-dyn-variable], which led to the next problem with the DO command. I've updated the code above with DO someProcName(param_a, param_b)

I am now getting an error saying:

(SQR 2002) DO arguments do not match procedure's

Weird part, if I remove the dynamic table variables and hardcode the table names in the FROM section, then it compiles properly without errors. This makes me believe that the error is not related to my someProcName (maybe?)

am I missing something here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文