当前位置: 首页 > 面试题库 >

java.sql.SQLException:参数号2不是OUT参数

段晨
2023-03-14
问题内容

运行此程序时出现错误:

1. cs = getCon1().prepareCall("{CALL SaveLabourWageDetails(?,?)}");

2. cs.setString(1, user.getUserId());

3. cs.registerOutParameter(2, java.sql.Types.INTEGER); //<--- ERROR at this line

4. cs.execute();

5. String lastIsertId=cs.getString(2);

存储过程为:

CREATE

    PROCEDURE `cheque_alert`.`SaveLabourDetailsHead`(IN wage_entered_by VARCHAR(10),OUT LastInsertId INT)

    BEGIN
    INSERT INTO `cheque_alert`.`labour_wage_head`
            (
             `wage_entered_by`,
             `entered_date_time`)
    VALUES (wage_entered_by,
         NOW());

          SELECT LAST_INSERT_ID() INTO LastInsertId;

    END$$

DELIMITER ;

请指出此代码中的问题。


问题答案:

您正在调用错误的过程。您有程序SaveLabourDetailsHead,正在打电话

1. cs = getCon1().prepareCall("{CALL SaveLabourWageDetails(?,?)}");  
                                         ↑

改成,

1. cs = getCon1().prepareCall("{CALL SaveLabourDetailsHead(?)}");

设置String参数wage_entered_by



 类似资料:
  • 问题内容: 我在这里有用于登录的代码,遇到此错误,“ java.sql.SQLException:未为参数2指定值” 有时,“ java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。” 我真的不知道 } 问题答案: 您正在将用户和密码都分配给相同的参数(1)。 更改此: 对此:

  • 问题内容: 关闭。 这个问题需要调试细节。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 验证我选择的选择组合框后,我无法将其插入数据库中。Tomcat给出以下错误: java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。 这是怎么引起的,我该如何解决? 问题答案: 当您在上调用任何方法时,都会收到此错误

  • 问题内容: 在PL / SQL(或许多其他语言)中,我可以具有从过程返回的IN OUT或OUT参数。如何在Java中实现类似的目的? 我知道这个窍门: 其中参数表示IN参数,并且参数可以包含返回值。约定是的数组。 有点笨拙。 编辑对答案的反馈 :其他技巧包括: 持有人/包装师类,但我不想介绍任何新类型,回调等。 返回值:我想要一个 通用的 解决方案。即一个涉及多个IN OUT参数。 IN OUT参

  • 我们在PostgreSQL数据库中有一个存储过程,它接受多个输入和多个输出参数。当我们执行以下操作时,来自PG Admin客户端的过程调用可以正常工作, 调用proc1(input1,input2,output1,output2) 但是,如果我们试图通过JDBC CallableStatement进行调用,我们会得到以下错误:, PostgreSQL驱动程序是“org.PostgreSQL.dri

  • 2. 传入参数与传出参数 如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的src参数是传入参数,dest参数是传出参数。有些函数的指针参数同时担当了这两种角色,如select(2)的fd_set *参数,既是传入参数又是传出参数,这称为Value-result参数。 表 24.1.

  • 问题内容: 我使用java和jdbc驱动程序(java.sql),并获得了以下代码: 我得到: 在执行statement.setString(1,clinetIP)时。 这是为什么?statement.setxxx是否在语句字符串中查找问号?我在声明中使用了一个问号,但它似乎被忽略了! 问题答案: 试试这个