SQL 查询未在数据块 Oracle Forms 上显示结果
SQL Query did not show result on Data Block Oracle Forms
我想显示 SQL 通过 When-Button-Pressed 将数据查询到数据块中。
代码:
DECLARE
p_cnic VARCHAR2(20);
BEGIN
p_cnic := 'SELECT cnicno FROM hof WHERE cnicno IN (SELECT cnic_no FROM we_group_hof_k)';
:we_group_hof_k.CNIC_NO := p_cnic;
END;
数据块"CNIC_NO"数据类型为VARCHAR
当我按下按钮时出现错误
FRM-40735: WHEN-BUTTON-PRESSED Trigger raised unhandled exception
您只需要使用带有 SELECT
语句的 INTO
子句而不使用 quotes
作为 :
BEGIN
SELECT cnicno
INTO :we_group_hof_k.CNIC_NO
FROM hof
WHERE cnicno IN (SELECT cnic_no FROM we_group_hof_k);
EXCEPTION WHEN no_data_found THEN null;
END;
- 在您的情况下,无需使用局部变量(
p_cnic
),例如你
可以直接给字段赋值。如果你真的需要,更喜欢
改为定义为 p_cnic hof.cnicno%type
,其中无论列的数据类型是什么。
- 添加异常处理以防止引发no_data_found的可能性
异常
If you need to bring multiple records, using an SELECT .. INTO
clause is not suitable, since you'd get
ORA-01422: exact fetch returns more than one requested number
in such a case.
针对上述情况,更喜欢使用游标:
BEGIN
go_block('myblock');
first_record;
for c in
(
SELECT cnicno
FROM hof
WHERE cnicno IN (SELECT cnic_no FROM we_group_hof_k)
)
loop
:we_group_hof_k.CNIC_NO := c.cnicno;
next_record;
end loop;
END;
我想显示 SQL 通过 When-Button-Pressed 将数据查询到数据块中。
代码:
DECLARE
p_cnic VARCHAR2(20);
BEGIN
p_cnic := 'SELECT cnicno FROM hof WHERE cnicno IN (SELECT cnic_no FROM we_group_hof_k)';
:we_group_hof_k.CNIC_NO := p_cnic;
END;
数据块"CNIC_NO"数据类型为VARCHAR
当我按下按钮时出现错误
FRM-40735: WHEN-BUTTON-PRESSED Trigger raised unhandled exception
您只需要使用带有 SELECT
语句的 INTO
子句而不使用 quotes
作为 :
BEGIN
SELECT cnicno
INTO :we_group_hof_k.CNIC_NO
FROM hof
WHERE cnicno IN (SELECT cnic_no FROM we_group_hof_k);
EXCEPTION WHEN no_data_found THEN null;
END;
- 在您的情况下,无需使用局部变量(
p_cnic
),例如你 可以直接给字段赋值。如果你真的需要,更喜欢 改为定义为p_cnic hof.cnicno%type
,其中无论列的数据类型是什么。 - 添加异常处理以防止引发no_data_found的可能性 异常
If you need to bring multiple records, using an
SELECT .. INTO
clause is not suitable, since you'd get
ORA-01422: exact fetch returns more than one requested number
in such a case.
针对上述情况,更喜欢使用游标:
BEGIN
go_block('myblock');
first_record;
for c in
(
SELECT cnicno
FROM hof
WHERE cnicno IN (SELECT cnic_no FROM we_group_hof_k)
)
loop
:we_group_hof_k.CNIC_NO := c.cnicno;
next_record;
end loop;
END;