从 oracle 表单中的 from 子句查询填充数据块
Posted
技术标签:
【中文标题】从 oracle 表单中的 from 子句查询填充数据块【英文标题】:populating a datablock from a from clause query in oracle forms 【发布时间】:2014-02-28 03:53:04 【问题描述】:我正在尝试像这样填充数据块:
PROCEDURE POP_BLOCK IS
Q VARCHAR2(2000);
BEGIN
Q:='(SELECT ROW_NUMBER () OVER (ORDER BY ROWNUM) SR, LN_DT, PER_MNTH, DEP_CR,
FIRST_VALUE (LOAN_AMOUNT - DOWN_PAYMENT) OVER (ORDER BY ROWNUM)
- SUM (PER_MNTH + DEP_CR) OVER (ORDER BY ROWNUM) BALANCE
FROM (SELECT CAR_LOAN.REGCODE, ROW_NUMBER () OVER (ORDER BY ROWNUM) SR,
LN_DT, PER_MNTH, CASE
WHEN ROWNUM >= 49
THEN 0
ELSE DEP_CR
END DEP_CR, LOAN_AMOUNT, DOWN_PAYMENT
FROM CAR_LOAN, TABLE (LOANINST (CAR_LOAN.LOAN_DATE)))
) WHERE REGCODE = '
||:LOAN_SYSTEM.REGCODE||')';
GO_BLOCK('CAR_LOAN_INSTALLMENT');
Clear_Block ;
SET_BLOCK_PROPERTY('CAR_LOAN_INSTALLMENT', QUERY_DATA_SOURCE_NAME,Q);
EXECUTE_QUERY;
EXCEPTION WHEN OTHERS THEN
MESSAGE(SQLCODE || SQLERRM);
MESSAGE(SQLCODE || SQLERRM);
END;
我在新表单实例上调用此过程,当我运行表单时出现错误:
frm-41380 error - cannot set the blocks query data source
谁能告诉我这里有什么问题,我现在应该做什么?
【问题讨论】:
为什么要动态分配 SQL?为什么不直接在块上设置 - 您可以直接在查询中引用 :LOAN_SYSTEM.REGCODE,而不是像这样连接它。 顺便说一下,SQLCODE || SQLERRM
是多余的 - SQLERRM 已经包含 SQLCODE。
无法在QUERY_DATA_SOURCE_NAME
属性中添加绑定变量
您将 where 子句放在 Default Where 属性中。 - 例如regcode=:LOAN_SYSTEM.REGCODE
当我添加绑定变量时它给出Not all Variables Bound
【参考方案1】:
我也有类似的问题。请确保 CAR_LOAN_INSTALLMENT 数据块具有以下属性(这有助于我解决问题):
数据库数据块:是 允许查询:是 查询数据源类型:FROM 子句查询 查询数据源名称:放置表/视图名称或 SELECT 查询
假定 REGCODE 是 NUMBER 而不是 VARCHAR2。如果是后者,请确保在动态查询中将其括在单引号中(即上面的 Q)。
问候, 吉里什
【讨论】:
以上是关于从 oracle 表单中的 from 子句查询填充数据块的主要内容,如果未能解决你的问题,请参考以下文章