微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正在更新数据字段 4gl

如何解决正在更新数据字段 4gl

有人可以帮我吗?

我想要做的就是更新表中的一个字段,例如会员编号,如果它满足某些条件。

例如:我有一个会员编号列表。如果列表中的数字与表格中的会员号相匹配 - 我们什么都不做。

如果不匹配 - 那么我们将会员编号更改为存储在我的输入 CSV 中的另一个编号。 (我知道这听起来倒过来了,但这只是一个类比)

所以本质上我在问 - 你如何更新数据库表中的字段?这似乎不起作用:

def stream inputStream.
def stream outStream.

def var abcData           as char extent 4 no-undo.

def var vl-XYZ# as integer.
def var vl-link# as integer.
def var vl-orig-ABC# as char.
def var vl-new-ABC# as char.
/* def var vl-error as char. */
def var vl-match as char.
def var vl-status as char.

def buffer bMembers for  members.

input stream inputStream from "/home/abc.csv".

output stream outStream to "/home/xyz.csv".

export stream outStream delimiter "'" "ABCID" "Match".
 
repeat:   
   
    assign
    abcData = "".
        
    import stream inputStream delimiter "'" abcData.

    assign
    vl-link# = integer(abcdata[1])
    vl-XYZ# = integer(abcData[2])
    vl-orig-ABC# = string(abcData[3])
    vl-new-ABC# = string(abcData[4])   .           

 
   for each account no-lock  where account.link# = vl-link#,First members no-lock where  members.XYZ# = vl-XYZ#:

        if members.abc# = vl-orig-ABC# then
            assign
                vl-status = "Needs amending".
        
        if members.abc# <> vl-orig-ABC# then
            assign
                vl-status = "No action needed"
                members.abc# = vl-new-ABC#.
    

 
export stream outStream delimiter "'" vl-link# vl-XYZ# vl-orig-ABC# members.abc# vl-status

]

解决方法

更新成员记录的问题将出现在 FOR EACH 中。您需要对成员表使用 EXCLUSIVE-LOCK 才能更新记录。

   for each account no-lock  where account.link# = vl-link#,First members EXCLUSIVE-LOCK where  members.XYZ# = vl-XYZ#:

members 表的选择标准似乎也不对,在joined FOR EACH 语句中,第二个表应该依赖第一个像

   for each account no-lock  where account.link# = vl-link#,First members EXCLUSIVE-LOCK where members.<somefield of members> = account.<matchine ield in account> 
                                   AND members.XYZ# = vl-XYZ#:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。