简体   繁体   English

使用Java调用过程时,显示参数编号2不是OUT参数

[英]Showing parameter number 2 is not an OUT parameter while calling a procedure using java

I am trying to call a stored procedure using java. 我试图使用Java调用存储过程。

I am a beginner in stored procedure. 我是存储过程的初学者。 So tried the same first in mysql terminal 所以首先在mysql终端尝试了相同的

mysql> delimiter // 
mysql> create procedure get_EmployeeName(IN cust_id INT,OUT cust_name varchar(20)) 
    -> begin 
    -> select name into cust_name from CUSTOMERS where id = cust_id; 
    -> end // 
Query OK, 0 rows affected (0.11 sec) 

mysql> delimiter ; 
mysql> call get_EmployeeName(1,@cust_name); 
Query OK, 1 row affected (0.08 sec) 
mysql> select @cust_name; 
+------------+ 
| @cust_name | 
+------------+ 
| A          | 
+------------+ 
1 row in set (0.01 sec) 

I am able to get the output. 我能够得到输出。

Now tried using Java. 现在尝试使用Java。

Create procedure statement 创建过程语句

stmt.execute("create procedure mydb.WhoAreThey(IN id INT, OUT name VARCHAR(20)) begin select Name into name from employees where EmployeeID = id; end");

Procedure Call 程序调用

Not sure if my procedure call is right or wrong 不确定我的过程调用是对还是错

        String IN = "1000";
        cs = con.prepareCall("{call WhoAreThey(?,?)}");
        cs.setString(1, IN);
        cs.registerOutParameter(2, Types.VARCHAR);
        cs.execute();

Above call gives an sqlexception "SQLException: Parameter number 2 is not an OUT parameter" 上面的调用给出了一个sqlexception “ SQLException:参数号2不是OUT参数”

UPDATE 更新

worked by calling " cs = con.prepareCall("{call mydb.WhoAreThey(?,?)}");" 通过调用“ cs = con.prepareCall(“ {致电mydb.WhoAre他们(?,?)}”))工作;“

But When I did select @name ..it is showing "Null". 但是当我选择@name ..时,它显示“ Null”。

I expected my out as "David Walker" from employees table as EmployeeID is 1000. 我期望从Employees表中以“ David Walker”身份出局,因为EmployeeID为1000。

mysql> select * from employees;
+------------+--------------+--------+---------------------+
| EmployeeID | Name         | Office | CreateTime          |
+------------+--------------+--------+---------------------+
|       1000 | David Walker | HQ101  | 2016-12-21 13:00:37 |
|       1001 | Paul Martin  | HQ101  | 2016-12-21 13:00:37 |
+------------+--------------+--------+---------------------+
2 rows in set (0.00 sec)

Am I checking in a wrong way(select @name) 我是否以错误的方式检查(选择@name)

Instead of calling WhoAreThey call mydb.WhoAreThey 他们没有呼叫WhoAre他们而是呼叫mydb。

 String IN = "1000";
    cs = con.prepareCall("{call mydb.WhoAreThey(?,?)}");
    cs.setString(1, IN);
    cs.registerOutParameter(2, Types.VARCHAR);
    cs.execute();

To fetch the value of OUT param USE: 要获取OUT param USE的值,请执行以下操作:

String name = cs.getString(2);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 通过CallableStatement调用存储过程时出现“参数不是OUT参数”错误 - “Parameter is not an OUT parameter” error while calling stored procedure via CallableStatement 从Java(Eclipse)调用MySQL存储过程中的OUT参数错误 - OUT Parameter Error in Calling MySQL Stored Procedure from Java (Eclipse) 使用jpa 2.0调用具有out参数的存储过程 - calling a stored procedure having out parameter using jpa 2.0 使用 OUT 参数调用存储过程 Spring Spring JPA 2.* - Calling stored procedure using OUT parameter with Spring Spring JPA 2.* JDBC MySQL存储过程抛出异常“参数编号2不是OUT参数”吗? - JDBC MySQL stored procedure throw exception “ Parameter number 2 is not an OUT parameter”? 过程如何将mysql中的参数返回给java - how procedure return out parameter in mysql to java Java存储过程中需要使用OUT参数的MYSQL - needed in java stored procedure with OUT parameter for MYSQL 参数号2不是OUT参数 - Parameter number 2 is not an OUT parameter 参数编号1不是OUT参数 - Parameter number 1 is not an OUT parameter 使用带有布尔 IN 参数的 CallableStatement 在 Java 中调用 Oracle PL/SQL 过程会产生 PLS-00306 oracle 错误: - Calling an Oracle PL/SQL procedure in Java using a CallableStatement with a boolean IN parameter gives an PLS-00306 oracle error:
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM