java 代码如下:
public EmpType getEmpById(int id)
  {
    Connection conn = null;
    CallableStatement cstmt = null;
    System.out.println("22");
    try
    {
      conn = co.getConn();
      conn.setTypeMap(getTypeMap());
      cstmt = conn.prepareCall("{? = call emp_util.get_emp_by_id(?)}");
      cstmt.registerOutParameter(1, Types.STRUCT, "EMP_TYPE");
      cstmt.setLong(2, id);
      cstmt.execute();
      System.out.println("exec succ");
      return (EmpType) cstmt.getObject(1);
    }plsql中代码如下:
create or replace type EMP_TYPE AS  object
  (
    id   NUMBER(6) ,
    name VARCHAR2(20) ,
    birthday DATE ,
    sex CHAR (1)
  )--package body如下:
CREATE OR REPLACE PACKAGE BODY EMP_UTIL IS
  FUNCTION get_emp_by_id (p_id NUMBER) RETURN EMP_TYPE
  IS
    t EMP_TYPE;
    BEGIN
     SELECT * into t.id,t.name,
     t.birthday,t.sex FROM t_emp
     WHERE id=p_id;
    RETURN t;
    
    END;   
  PROCEDURE create_emp(p_emp EMP_TYPE)
  IS
  BEGIN
    insert into t_emp(id,name,birthday,sex)
     values(p_emp.id,p_emp.name,p_emp.birthday,p_emp.sex);
  END;
END;报错信息如下:
java.sql.SQLException: ORA-06530: 引用未初始化的组合
ORA-06512: 在 "APPS.EMP_UTIL", line 6
ORA-06512: 在 line 1求高人指点一下 ,困扰了许久啊!!!