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求高人指点一下 ,困扰了许久啊!!!
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求高人指点一下 ,困扰了许久啊!!!
IS
t EMP_TYPE := EMP_TYPE();
BEGIN
t EMP_TYPE;
第二行EMP_TYPE需要初始化!
我改了以后,还是报错.调用EMP_UTIL时,参数类型或个数错误。。