从 Java 方法(位于 DAO 层)调用存储过程(将记录插入 lsa_user_info 表)时获取 PSQLException [英] Getting PSQLException while calling a Stored Procedure (which inserts record into lsa_user_info table) from Java method ( which is in DAO Layer)

查看:41
本文介绍了从 Java 方法(位于 DAO 层)调用存储过程(将记录插入 lsa_user_info 表)时获取 PSQLException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是存储过程的新手.我想在 lsa_user_info 表中插入一个包含 20 个列值的记录.我正在调用一个存储过程来完成这个任务.

此外,我希望结果集将返回插入的记录的主键值 (user_id).但是,我收到了这个错误:

<块引用>

org.postgresql.util.PSQLException: **列索引超出范围:20,列数:19.

lsa_user_info 表定义:

创建表 public.lsa_user_info(user_id 整数 NOT NULL DEFAULT nextval('lsa_user_info_user_id_seq'::regclass),created_datetime 没有时区的时间戳,created_user_id 整数,email_id 字符变化(255),first_name 字符变化(255),姓氏字符变化(255),没有时区的 modified_datetime 时间戳,modified_user_id 整数,status_id 整数,用户名字符变化(255),user_timezone 字符变化,phone_extension 字符不同,phone_direct 字符变化(255),主管角色不同(255),标题字符变化(255),传真字符变化(255),优选名称字符变化(255),状态字符变化(255),supervisor_phone 字符变化(255),supervisor_extension 字符变化(255),贷款类型字符变化(255),投资者姓名字符变化(255),language_indicator 字符变化(255),working_hrs 字符变化(255),group_id 字符变化(255),racfid 性格变化(255),uuid 字符变化(255),agent_type 字符变化(100),line_of_business 整数 DEFAULT 1,system_admin_flag boolean DEFAULT false,约束 user_info_pkey PRIMARY KEY (user_id)) 与 (OIDS=FALSE);更改表 public.lsa_user_infolsasdev 的所有者;将所有表 public.lsa_user_info 授予 lsasdev;

这是我的存储过程:

创建或替换函数 public.insert_user_info(email_id 字符不同,first_name 字符不同,姓氏字符不同,modified_user_id 整数,status_id 整数,用户名字符不同,user_timezone 字符变化,phone_extension 字符不同,phone_direct 字符变化,主管性格不同,标题字符不同,传真字符不同,优选名称字符不同,supervisor_phone 字符不同,supervisor_extension 字符不同,working_hrs 字符不同,group_id 字符不同,line_of_business 整数,system_admin_flag 布尔值,racfid 字符变化)返回数字作为$BODY开始插入 public.lsa_user_info(电子邮件 ID、名字、姓氏、modified_user_id, status_id, user_name, user_timezone,电话分机、电话直接、主管、职务、传真、优选名称、主管电话、主管分机、工作时间、组 ID、line_of_business、system_admin_flag、racfid) VALUES( email_id, first_name,last_name,modified_user_id, status_id, user_name, user_timezone,电话分机、电话直接、主管、职务、传真、优选名称、主管电话、主管分机、工作时间、组 ID、line_of_business, system_admin_flag, racfid );返回 1;结尾$BODY$语言 plpgsql 易失性成本 100;ALTER FUNCTION public.insert_user_info(字符变化,字符变化,字符变化,整数, 整数, 字符变化, 字符变化, 字符变化, 字符变化,性格变化,性格变化,性格变化,性格变化,性格变化,字符变化、字符变化、字符变化、整数、布尔值、字符变化)lsasdev 的所有者;

这是我调用存储过程的代码:

 public Integer invokeUserInfoStoredProc(UserInfoHibVO userInfoHibVO)throws Exception{log.info("********** 执行存储过程 insert_user_info() 开始 ********");结果集结果集=null;连接连接=空;CallableStatement storedProcedure = null;BigDecimal resp =null;会话会话 = sessionFactory.getCurrentSession();SessionImpl sessionImpl = (SessionImpl) session;整数生成的UserId = null;尝试 {connection = sessionImpl.connection();connection.setAutoCommit(false);log.info(连接到 LSAS 数据库成功建立.");storageProcedure = connection.prepareCall("{ ? = callinsert_user_info(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?}");storageProcedure.registerOutParameter(1, Types.NUMERIC);storageProcedure.setString(2,userInfoHibVO.getEmail());storageProcedure.setString(3,userInfoHibVO.getFirstName());storageProcedure.setString(4,userInfoHibVO.getLastName());storageProcedure.setInt(5,userInfoHibVO.getModifiedUserId()!=null ? userInfoHibVO.getModifiedUserId() : 0);storageProcedure.setInt(6,userInfoHibVO.getUserStatus().getStatusId());storageProcedure.setString(7,userInfoHibVO.getUsername());storageProcedure.setString(8,userInfoHibVO.getUserTimezone());storageProcedure.setString(9,StringUtil.isNotEmpty(userInfoHibVO.getPhoneExtension()) ? userInfoHibVO.getPhoneExtension():"");storageProcedure.setString(10,StringUtil.isNotEmpty(userInfoHibVO.getPhoneDirect()) ? userInfoHibVO.getPhoneDirect():"");storageProcedure.setString(11,StringUtil.isNotEmpty(userInfoHibVO.getManager()) ? userInfoHibVO.getManager():"");storageProcedure.setString(12,StringUtil.isNotEmpty(userInfoHibVO.getTitle()) ? userInfoHibVO.getTitle():"");storageProcedure.setString(13,StringUtil.isNotEmpty(userInfoHibVO.getFax()) ? userInfoHibVO.getFax():"");storageProcedure.setString(14,userInfoHibVO.getPreferredName());storageProcedure.setString(15,StringUtil.isNotEmpty(userInfoHibVO.getSupervisorPhone())?userInfoHibVO.getSupervisorPhone():"");storageProcedure.setString(16,userInfoHibVO.getSupervisorExtension());storageProcedure.setString(17,StringUtil.isNotEmpty(userInfoHibVO.getWorkingHrs())? userInfoHibVO.getWorkingHrs():"");storageProcedure.setString(18,StringUtil.isNotEmpty(userInfoHibVO.getGroup()) ? userInfoHibVO.getGroup():"");storageProcedure.setInt(19,userInfoHibVO.getLob());storageProcedure.setBoolean(20, false);storageProcedure.setString(21,"");storageProcedure.executeUpdate();resp = (BigDecimal) storedProcedure.getObject(1);结果集 = storedProcedure.getGeneratedKeys();if(resultset!=null && resultset.next())generateUserId=resultset.getInt(1);log.info(**********存储过程insert_user_info()执行成功********");}catch(异常exp){exp.printStackTrace();log.error("执行insert_user_info()数据的存储过程时发生异常:" + exp);}最后{if(null!=resultset)resultset.close();if(null!=storedProcedure)storedProcedure.close();log.info(存储过程 insert_user_info() 结束**************");}返回生成的用户 ID;}

请告诉我是什么问题?为什么我会收到此错误:

<块引用>

列索引超出范围:20,列数:19.

请帮帮我!提前致谢

解决方案

函数的变化:在表中插入数据后,函数应该返回插入的user_id排.你应该改变你的功能如下

  1. 将返回类型从 Numeric 更改为 Bigint
  2. 更改参数名称,因为表列名称和参数名称相同.
  3. 使用带有insert intoreturning语句返回插入的user_id

代码:

创建或替换函数 PUBLIC.insert_user_info (param_email_id 字符变化,param_first_name 字符变化,param_last_name 字符变化,param_modified_user_id 整数,param_status_id 整数,param_user_name 字符变化,param_user_timezone 字符变化,param_phone_extension 字符变化,param_phone_direct 字符变化,param_supervisor 字符变化,param_title 字符变化,param_fax 字符变化,param_preferred_name 字符变化,param_supervisor_phone 字符变化,param_supervisor_extension 字符变化,param_working_hrs 特性变化,param_group_id 字符变化,param_line_of_business 整数,param_system_admin_flag 布尔值,param_racfid 字符变化) 返回 BIGINT 作为 $BODY DECLAREx 作为 BIGINT 开始x = (插入 PUBLIC.lsa_user_info (电子邮件ID,名,姓,modified_user_id,状态 ID,用户名,用户时区,电话分机,电话直接,导师,标题,传真,首选名称,supervisor_phone,supervisor_extension,工作时间,group_id,line_of_business,system_admin_flag,吵闹的)价值观(param_email_id,param_first_name,param_last_name,param_modified_user_id,param_status_id,param_user_name,param_user_timezone,param_phone_extension,param_phone_direct,param_supervisor,参数标题,参数传真,param_preferred_name,param_supervisor_phone,param_supervisor_extension,param_working_hrs,param_group_id,param_line_of_business,param_system_admin_flag,参数_racfid) 返回用户 ID;) 返回 x;END $BODY$ LANGUAGE plpgsql VOLATILE COST 100;

JAVA 代码的变化:在 Java 代码中,Postgres 函数的调用与 MySQL 或 Oracle 的存储过程不同.

public Integer invokeUserInfoStoredProc(UserInfoHibVO userInfoHibVO)throws Exception{log.info(********** 执行存储过程 insert_user_info() 开始 ********");结果集结果集=null;连接连接=空;长响应 =null;会话会话 = sessionFactory.getCurrentSession();SessionImpl sessionImpl = (SessionImpl) session;整数生成的UserId = null;尝试{connection = sessionImpl.connection();connection.setAutoCommit(false);log.info(连接到 LSAS 数据库成功建立.");String SQL="select * from insert_user_info(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?}"PreparedStatement storedProcedure = connection.prepareStatement(SQL);storageProcedure.setString(1,userInfoHibVO.getEmail());storageProcedure.setString(2,userInfoHibVO.getFirstName());storageProcedure.setString(3,userInfoHibVO.getLastName());storageProcedure.setInt(4,userInfoHibVO.getModifiedUserId()!=null ?userInfoHibVO.getModifiedUserId() : 0);storageProcedure.setInt(5,userInfoHibVO.getUserStatus().getStatusId());storageProcedure.setString(6,userInfoHibVO.getUsername());storageProcedure.setString(7,userInfoHibVO.getUserTimezone());storageProcedure.setString(8,StringUtil.isNotEmpty(userInfoHibVO.getPhoneExtension()) ?userInfoHibVO.getPhoneExtension():"");storageProcedure.setString(9,StringUtil.isNotEmpty(userInfoHibVO.getPhoneDirect())?userInfoHibVO.getPhoneDirect():"");storageProcedure.setString(10,StringUtil.isNotEmpty(userInfoHibVO.getManager())?userInfoHibVO.getManager():"");storageProcedure.setString(11,StringUtil.isNotEmpty(userInfoHibVO.getTitle())?userInfoHibVO.getTitle():"");storageProcedure.setString(12,StringUtil.isNotEmpty(userInfoHibVO.getFax())?userInfoHibVO.getFax():"");storageProcedure.setString(13,userInfoHibVO.getPreferredName());storedProcedure.setString(14,StringUtil.isNotEmpty(userInfoHibVO.getSupervisorPhone())?userInfoHibVO.getSupervisorPhone():"");storageProcedure.setString(15,userInfoHibVO.getSupervisorExtension());storageProcedure.setString(16,StringUtil.isNotEmpty(userInfoHibVO.getWorkingHrs())?userInfoHibVO.getWorkingHrs():"");storageProcedure.setString(17,StringUtil.isNotEmpty(userInfoHibVO.getGroup())?userInfoHibVO.getGroup():"");storageProcedure.setInt(18,userInfoHibVO.getLob());storageProcedure.setBoolean(19, false);storageProcedure.setString(20,"");结果集 = storedProcedure.executeQuery();if(resultset!=null && resultset.next())generateUserId=resultset.getLong(0);log.info(**********存储过程insert_user_info()执行成功********");}捕获(异常exp){exp.printStackTrace();log.error("执行insert_user_info()数据的存储过程时发生异常:" + exp);}最后{if(null!=resultset)resultset.close();if(null != storedProcedure)storedProcedure.close();log.info(存储过程insert_user_info()结束**************");}返回生成的用户 ID;}

遵循 Java 代码参考>

I am new to stored procedures. I want to insert a record with 20 column values into lsa_user_info table. I am invoking a stored procedure to do this task.

Also, I'm expecting the resultset will return the primary key value of the record that was inserted (user_id). But, I'm getting this error instead:

org.postgresql.util.PSQLException: **The column index is out of range: 20, number of columns: 19.

lsa_user_info table definition :

CREATE TABLE public.lsa_user_info
(
        user_id integer NOT NULL DEFAULT nextval('lsa_user_info_user_id_seq'::regclass),
        created_datetime timestamp without time zone,
        created_user_id integer,
        email_id character varying(255),
        first_name character varying(255),
        last_name character varying(255),
        modified_datetime timestamp without time zone,
        modified_user_id integer,
        status_id integer,
        user_name character varying(255),
        user_timezone character varying,
        phone_extension character varying,
        phone_direct character varying(255),
        supervisor character varying(255),
        title character varying(255),
        fax character varying(255),
        preferred_name character varying(255),
        state character varying(255),
        supervisor_phone character varying(255),
        supervisor_extension character varying(255),
        loan_type character varying(255),
        investor_name character varying(255),
        language_indicator character varying(255),
        working_hrs character varying(255),
        group_id character varying(255),
        racfid character varying(255),
        uuid character varying(255),
        agent_type character varying(100),
        line_of_business integer DEFAULT 1,
        system_admin_flag boolean DEFAULT false,

        CONSTRAINT user_info_pkey PRIMARY KEY (user_id)
) WITH (OIDS=FALSE);

 ALTER TABLE public.lsa_user_info
    OWNER TO lsasdev;
     GRANT ALL ON TABLE public.lsa_user_info TO lsasdev;

This is my stored procedure:

CREATE OR REPLACE FUNCTION public.insert_user_info(
     email_id character varying, 
     first_name character varying,
     last_name character varying,
     modified_user_id integer,
     status_id integer, 
     user_name character varying, 
     user_timezone character varying, 
     phone_extension character varying, 
     phone_direct character varying, 
     supervisor character varying, 
     title character varying, 
     fax character varying, 
     preferred_name character varying,
     supervisor_phone character varying, 
     supervisor_extension character varying, 
     working_hrs character varying, 
     group_id character varying,
     line_of_business integer, 
     system_admin_flag boolean, 
     racfid character varying) RETURNS numeric 
AS
     $BODY
     BEGIN
           INSERT INTO public.lsa_user_info(
           email_id, first_name,last_name,
          modified_user_id, status_id, user_name, user_timezone,
         phone_extension, phone_direct, supervisor, title,  fax,
        preferred_name, supervisor_phone, supervisor_extension,  working_hrs, group_id, 
         line_of_business, system_admin_flag,racfid) VALUES

          ( email_id, first_name,last_name,
    modified_user_id, status_id, user_name, user_timezone,
         phone_extension, phone_direct, supervisor, title,  fax,
        preferred_name, supervisor_phone, supervisor_extension,  working_hrs, group_id, 
         line_of_business, system_admin_flag, racfid  );

   RETURN 1;
    END

$BODY$
    LANGUAGE plpgsql VOLATILE
 COST 100;
   ALTER FUNCTION public.insert_user_info(character varying, character varying, character varying, 
    integer, integer, character varying, character varying, character varying, character varying, 
   character varying, character varying, character varying, character varying, character varying, 
   character varying, character varying, character varying, integer, boolean, character varying)
  OWNER TO lsasdev;

This is my code invoking the stored procedure:

     public Integer invokeUserInfoStoredProc(UserInfoHibVO userInfoHibVO)throws Exception{
        log.info("********** Execcution of Stored Procedure insert_user_info() started ********");
                   ResultSet resultset =null;
           Connection connection =null;
         CallableStatement storedProcedure = null;
         BigDecimal resp =null;
         Session session = sessionFactory.getCurrentSession();
         SessionImpl sessionImpl = (SessionImpl) session;
         Integer generatedUserId = null;

         try {
            connection = sessionImpl.connection();          
            connection.setAutoCommit(false);
            log.info("Connection to LSAS DB established successfully.");
        
            storedProcedure = connection.prepareCall("{ ? = call 
        insert_user_info(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?}");
            storedProcedure.registerOutParameter(1, Types.NUMERIC);
        
            storedProcedure.setString(2,userInfoHibVO.getEmail());
            storedProcedure.setString(3,userInfoHibVO.getFirstName());
            storedProcedure.setString(4,userInfoHibVO.getLastName());
        
            storedProcedure.setInt(5,userInfoHibVO.getModifiedUserId()!=null ? userInfoHibVO.getModifiedUserId() : 0);
            storedProcedure.setInt(6,userInfoHibVO.getUserStatus().getStatusId());
            storedProcedure.setString(7,userInfoHibVO.getUsername());
            storedProcedure.setString(8,userInfoHibVO.getUserTimezone());
        
            storedProcedure.setString(9,StringUtil.isNotEmpty(userInfoHibVO.getPhoneExtension()) ? userInfoHibVO.getPhoneExtension():"");
            storedProcedure.setString(10,StringUtil.isNotEmpty(userInfoHibVO.getPhoneDirect()) ? userInfoHibVO.getPhoneDirect():"");
            storedProcedure.setString(11,StringUtil.isNotEmpty(userInfoHibVO.getManager()) ? userInfoHibVO.getManager():"");
            storedProcedure.setString(12,StringUtil.isNotEmpty(userInfoHibVO.getTitle()) ? userInfoHibVO.getTitle():"");
             storedProcedure.setString(13,StringUtil.isNotEmpty(userInfoHibVO.getFax()) ? userInfoHibVO.getFax():"");
        
        storedProcedure.setString(14,userInfoHibVO.getPreferredName());
        storedProcedure.setString(15,StringUtil.isNotEmpty(userInfoHibVO.getSupervisorPhone())?userInfoHibVO.getSupervisorPhone():"");
        storedProcedure.setString(16,userInfoHibVO.getSupervisorExtension());
        storedProcedure.setString(17,StringUtil.isNotEmpty(userInfoHibVO.getWorkingHrs())? userInfoHibVO.getWorkingHrs():"");
        storedProcedure.setString(18,StringUtil.isNotEmpty(userInfoHibVO.getGroup()) ? userInfoHibVO.getGroup():"");
        storedProcedure.setInt(19,userInfoHibVO.getLob());
        storedProcedure.setBoolean(20, false);
        storedProcedure.setString(21,"");

        storedProcedure.executeUpdate();

        resp = (BigDecimal) storedProcedure.getObject(1);
        resultset = storedProcedure.getGeneratedKeys();

        if(resultset!=null && resultset.next())
            generatedUserId= resultset.getInt(1);

        log.info("********** Stored Procedure insert_user_info() Executed successfully ********");
    }catch(Exception exp){
        exp.printStackTrace();
        log.error("Exception occurred in executing stored procedure for insert_user_info() data:" + exp);
    }finally{
        if(null!=resultset)resultset.close();
        if(null!=storedProcedure)storedProcedure.close();
        log.info("Stored proc insert_user_info() ended**************");
    }
                return generatedUserId;
} 

Please let me know what is the issue? Why I am getting this error:

The column index is out of range: 20, number of columns: 19.

Please assist me! Thanks in advance

解决方案

Changes in function: after inserting the data in table, the function should return the user_id of inserted row. you should change your Function as below

  1. Change the return type from Numeric to Bigint
  2. Change the name of parameters because table column names and parameter name are same.
  3. Use returning statement with insert into to return the inserted user_id

Code:

CREATE OR REPLACE FUNCTION PUBLIC.insert_user_info (
        param_email_id CHARACTER VARYING,
        param_first_name CHARACTER VARYING,
        param_last_name CHARACTER VARYING,
        param_modified_user_id INTEGER,
        param_status_id INTEGER,
        param_user_name CHARACTER VARYING,
        param_user_timezone CHARACTER VARYING,
        param_phone_extension CHARACTER VARYING,
        param_phone_direct CHARACTER VARYING,
        param_supervisor CHARACTER VARYING,
        param_title CHARACTER VARYING,
        param_fax CHARACTER VARYING,
        param_preferred_name CHARACTER VARYING,
        param_supervisor_phone CHARACTER VARYING,
        param_supervisor_extension CHARACTER VARYING,
        param_working_hrs CHARACTER VARYING,
        param_group_id CHARACTER VARYING,
        param_line_of_business INTEGER,
        param_system_admin_flag BOOLEAN,
        param_racfid CHARACTER VARYING 
    ) RETURNS BIGINT AS $BODY DECLARE
    x AS BIGINT BEGIN
        x = (
            INSERT INTO PUBLIC.lsa_user_info (
                email_id,
                first_name,
                last_name,
                modified_user_id,
                status_id,
                user_name,
                user_timezone,
                phone_extension,
                phone_direct,
                supervisor,
                title,
                fax,
                preferred_name,
                supervisor_phone,
                supervisor_extension,
                working_hrs,
                group_id,
                line_of_business,
                system_admin_flag,
                racfid 
            )
        VALUES
            (
                param_email_id,
                param_first_name,
                param_last_name,
                param_modified_user_id,
                param_status_id,
                param_user_name,
                param_user_timezone,
                param_phone_extension,
                param_phone_direct,
                param_supervisor,
                param_title,
                param_fax,
                param_preferred_name,
                param_supervisor_phone,
                param_supervisor_extension,
                param_working_hrs,
                param_group_id,
                param_line_of_business,
                param_system_admin_flag,
                param_racfid 
            ) RETURNING user_id;
        
    ) RETURN x;

END $BODY$ LANGUAGE plpgsql VOLATILE COST 100;

Changes in JAVA code: In Java code calling of Postgres function is different from stored procedure of MySQL or Oracle.

public Integer invokeUserInfoStoredProc(UserInfoHibVO userInfoHibVO)throws Exception{
        log.info("********** Execution of stored procedure insert_user_info() started ********");
        ResultSet resultset =null;
        Connection connection =null;
        Long resp =null;
        Session session = sessionFactory.getCurrentSession();
        SessionImpl sessionImpl = (SessionImpl) session;
        Integer generatedUserId = null;

        try{
            connection = sessionImpl.connection();           
            connection.setAutoCommit(false);
            log.info("Connection to LSAS DB established successfully.");
            String SQL="select * from insert_user_info(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?}"
            PreparedStatement storedProcedure = connection.prepareStatement(SQL);
            storedProcedure.setString(1,userInfoHibVO.getEmail());
            storedProcedure.setString(2,userInfoHibVO.getFirstName());
            storedProcedure.setString(3,userInfoHibVO.getLastName());
            storedProcedure.setInt(4,userInfoHibVO.getModifiedUserId()!=null ? 
            userInfoHibVO.getModifiedUserId() : 0);
            storedProcedure.setInt(5,userInfoHibVO.getUserStatus().getStatusId());
            storedProcedure.setString(6,userInfoHibVO.getUsername());
            storedProcedure.setString(7,userInfoHibVO.getUserTimezone());
            storedProcedure.setString(8,StringUtil.isNotEmpty(userInfoHibVO.getPhoneExtension()) ? 
            userInfoHibVO.getPhoneExtension():"");
            storedProcedure.setString(9,StringUtil.isNotEmpty(userInfoHibVO.getPhoneDirect())? 
            userInfoHibVO.getPhoneDirect():"");
            storedProcedure.setString(10,StringUtil.isNotEmpty(userInfoHibVO.getManager())? 
            userInfoHibVO.getManager():"");
            storedProcedure.setString(11,StringUtil.isNotEmpty(userInfoHibVO.getTitle())? 
            userInfoHibVO.getTitle():"");
            storedProcedure.setString(12,StringUtil.isNotEmpty(userInfoHibVO.getFax())? 
            userInfoHibVO.getFax():"");
            storedProcedure.setString(13,userInfoHibVO.getPreferredName());
            storedProcedure.setString(14,StringUtil.isNotEmpty(userInfoHibVO.getSupervisorPhone())?userInfoHibVO.getSupervisorPhone():"");
            storedProcedure.setString(15,userInfoHibVO.getSupervisorExtension());
            storedProcedure.setString(16,StringUtil.isNotEmpty(userInfoHibVO.getWorkingHrs())? 
            userInfoHibVO.getWorkingHrs():"");
            storedProcedure.setString(17,StringUtil.isNotEmpty(userInfoHibVO.getGroup())? 
            userInfoHibVO.getGroup():"");
            storedProcedure.setInt(18,userInfoHibVO.getLob());
            storedProcedure.setBoolean(19, false);
            storedProcedure.setString(20,"");

            resultset = storedProcedure.executeQuery();

            if(resultset!=null && resultset.next())
                generatedUserId= resultset.getLong(0);
            log.info("********** Stored Procedure insert_user_info() Executed successfully ********");
        }
        catch(Exception exp){
            exp.printStackTrace();
            log.error("Exception occurred in executing stored procedure for insert_user_info() data:" + exp);
        }
        finally{
            if(null!=resultset)resultset.close();
            if(null != storedProcedure)storedProcedure.close();
            log.info("Stored procedure insert_user_info() ended**************");
        }
        return generatedUserId;
    } 

Follow the Reference for Java Code

这篇关于从 Java 方法(位于 DAO 层)调用存储过程(将记录插入 lsa_user_info 表)时获取 PSQLException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆