首页 > 解决方案 > PLSQL获取表达式的类型错误

问题描述

我是 PLSQL 的新手,在创建 PLSQL 函数时遇到了问题。它说表达式类型错误。我需要一些帮助。这是我的功能

CREATE OR REPLACE TYPE HOTGROUPTYPE AS OBJECT (
  IMEI           VARCHAR2(255),
  LACCI  VARCHAR2(255),
  FRAUD_TYPE VARCHAR2(255),
  MSISDN VARCHAR2(255)
);
/

CREATE OR REPLACE TYPE HOTGROUPTYPE_tab IS TABLE OF HOTGROUPTYPE;
/

CREATE OR REPLACE FUNCTION get_tab_tf (p_count IN NUMBER, p_days IN NUMBER) RETURN HOTGROUPTYPE_tab 
AS
l_tab  HOTGROUPTYPE_tab:=HOTGROUPTYPE_tab();
BEGIN
  for i in (select IMEI,LACCI,FRAUD_TYPE,MSISDN 
  from fms_fraud_master_tbl 
  where request_type='BARRING' 
  and rownum<2)
  loop
  l_tab.extend;
  l_tab(l_tab.last) := i.IMEI;
  end loop;

  RETURN l_tab;
END;
/

执行函数时出现此错误

11/3     PL/SQL: Statement ignored
11/28    PLS-00382: expression is of wrong type

标签: oracleplsqluser-defined-types

解决方案


您没有正确地将值分配给您的表类型。l_tab(<index>)必须分配类型的变量HOTGROUPTYPE

你必须使用这个:

l_tab(l_tab.last) := HOTGROUPTYPE(i.IMEI, i.LACCI,i.FRAUD_TYPE,i.MSISDN );

推荐阅读