【问题标题】:getting error in oracle forms 10G but working in SQL developer在 oracle 表单 10G 中出现错误,但在 SQL 开发人员中工作
【发布时间】:2022-01-26 13:12:53
【问题描述】:

亲爱的,我正在编写一个在 sqlplus 或 toad 中运行良好但不能在 oracle 表单中运行的代码,请任何人给我提示我在哪里做wearg

    INSERT INTO PROD_CUT_ISSU_MST (TRANS_ID, LOC_ID, DATED, FORM_DEPT_CODE, TO_DEPT_CODE,
                                    FINAL_IND, ISS_NUM, BUNDLE_QTY, COMP_CODE,ACTUAL_DATE)
           VALUES ((select MAX(T.TRANS_ID)+1  from prod_cut_issu_mst t ), 2, TRUNC(SYSDATE),
                                    13, 14, 'N',(prod_validations.get_autobar('PCI', 1,2 )),5,1, TRUNC(SYSDATE));                   

它在 oracle 表单中抛出此错误,但在 plsql 或 toad 中可以正常工作

在预期以下情况之一时遇到符号“select”:(-+case...

【问题讨论】:

    标签: oracle oracle10g oracleforms


    【解决方案1】:

    改写成

    INSERT INTO prod_cut_issu_mst (trans_id,
                                   loc_id,
                                   dated,
                                   form_dept_code, --> is this really "form"? Not "from"?
                                   to_dept_code,
                                   final_ind,
                                   iss_num,
                                   bundle_qty,
                                   comp_code,
                                   actual_date)
       SELECT MAX (t.trans_id) + 1 trans_id,
              2  loc_id,
              TRUNC (SYSDATE) dated,
              13 form_dept_code,
              14 to_dept_code,
              'N' final_ind,
              prod_validations.get_autobar ('PCI', 1, 2) iss_num,
              5  bundle_qty,
              1  comp_code,
              TRUNC (SYSDATE) actual_date
         FROM prod_cut_issu_mst t;
    

    不过,请注意,您所做的很可能是错误,并且在多用户环境中,当两个(或更多)用户选择相同的@987654322 时,它迟早会失败@ 并添加 1 到它。如果trans_id 应该是唯一的(例如主键列),则insert 将对除一个(首先提交的用户)之外的所有用户失败。

    【讨论】:

    • 感谢@Littlefoot 它的工作,是的,它只适用于单个用户,所以不需要顺序没有多个用户正在处理这个表单最好的问候。
    • @Zedan 说“是的,它只适用于单个用户”。好吧,无论如何今天...... ;-) 你应该总是在设计时考虑到未来可能的扩展。我曾经在一家新的汽车装配厂工作,该厂在他们所有的程序和软件中都融入了这样一种假设,即他们永远不会制造超过一种车型,而且每天只工作一个班次。这种假设持续了不到两年,而 15 年后,仍然有代码在“跳槽”来处理多个模型和 3 个班次。
    • “你在设计时应该始终考虑到未来可能的扩展”——是的,这经常发生在@EdStevens,我的经验是,你开始一个包含许多不必要功能的炸毁代码,主要禁止 preformace,当这个 expansion 出现时,您意识到您必须重新设计所有内容,因为几年前的假设是错误的。在这里,如果 一个进程 填充数据库,则使用 MAX 的解决方案比使用序列更可取,即使您怀疑在某些年份您将需要并行加载。 IMO - 保持冷静,只有在到目前为止才考虑新的解决方案。
    • @Littlefoot 亲爱的,除了这个包线prod_validations.get_autobar ('PCI', 1, 2) iss_num, 不知道为什么在蟾蜍中运行时正常工作,如果你有任何想法?\
    • @Littlefoot 好的,我通过分配给变量的最大值解决了一切正常
    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 2016-12-07
    相关资源
    最近更新 更多