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;