使用If语句更新表的PL / SQL代码

时间:2017-02-15 20:53:55

标签: oracle-apex

对不起所有这些问题。

我有一个下拉列表,用户可以在其中选择各种操作类型。

示例:(:P6_Action_ind)

完全接受

部分接受

拒绝/默认

如果用户选择完全接受,我想在ca_offer表上使用(offer_shares)列中的原始要约金额更新(Accept_shares)列。

我正在尝试在流程点(提交时)

上执行此操作
  if :P6_ACTION_IND = 'FULL ACCEPTANCE' then
  update ca_offer
    set accept_shares = offer_shares
    where seq_id = :P6_SEQ_ID;
end if;

3 个答案:

答案 0 :(得分:0)

检查选择列表项与描述性文本的值。此值是会话状态中设置的值,应该用作代码中的文字字符串。

LOV将显示一个值,并存储一个不同的值 - 因此select语句中有两列。您需要确保第二列(存储的值)处于会话状态(运行时底部的开发人员工具栏上的按钮),并匹配您在PL / SQL中硬编码的任何内容。

答案 1 :(得分:0)

好吧也许我需要尝试解释一下我想要做的更好。

我有一个页面项目(:P6_Action_ind),它是一个(LOV)的下拉列表 LOV:

if :P6_ACTION_IND = 'FULL ACCEPTANCE' then
  update ca_offer
    set accept_shares = offer_shares
    where seq_id = :P6_SEQ_ID;
end if;

LOV包含客户端可以采取的许多操作,但这里有一些:

完全接受

部分接受

拒绝/默认

现在,如果他们选择完全接受,我需要更新表格(CA_OFFER)

function createdRow(row, data, dataIndex) {
    $compile(angular.element(row).contents())($scope);
}

但它似乎完全接受"在提交时不是一个值。

答案 2 :(得分:0)

  

我尝试更新ca_offer a set(accept_shares)=(SELECT A.OFFER_SHARES from> CA_OFFER A,CA_OFFER_ACTION B,其中B.OFFER_ACTION_DESC ='FULL ACCEPTANVCE'); >但那不起作用..

你可能试图从表ca_offer获取对应于'FULL ACCEPTANCE'的列offer_shares。

你在ACCEPTANVCE写了一个错字, 并且更新应通过子查询获取accept_shares的值,该子查询从查找表返回一行和一列。

update ca_offer 
set accept_shares = (
   select offer_shares
   from ca_offer_action
   where OFFER_ACTION_DESC = 'FULL ACCEPTANCE'
)
where seq_id = :P6_SEQ_ID

请参阅Oracle documentation

中的子查询3

但是,你应该首先在R字段的LOV中选择参考字段(D =描述,R =参考)

Select OFFER_ACTION_DESC D, offer_shares R 
FROM CA_OFFER_ACTION 
WHERE OFFER_NAME = :P6_OFFER_TYPE