javaを使用してストアドプロシージャを呼び出そうとしています。Javaを使用してプロシージャを呼び出すときに、パラメータ番号2がOUTパラメータではない
私はストアドプロシージャの初心者です。 は、だから私は、出力を得ることができる午前
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)
mysqlの端子で同じ最初のを試してみました。
Javaを使用しようとしました。
CREATE PROCEDURE文
プロシージャコールは私のプロシージャ呼び出しが正しいか間違っている場合わからない
コール以上 String IN = "1000";
cs = con.prepareCall("{call WhoAreThey(?,?)}");
cs.setString(1, IN);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
はのSQLExceptionに 「のSQLException与え
stmt.execute("create procedure mydb.WhoAreThey(IN id INT, OUT name VARCHAR(20)) begin select Name into name from employees where EmployeeID = id; end");
:パラメータ番号2をOUTパラメータではありません」
UPDATE
"CS = con.prepareCallを呼び出すことにより、仕事(" {mydb.WhoAreThey()を呼び出す?を} ");"
しかし、私がしたときを選択@name .. "Null"を表示しています。
私は社員が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)
であるように私は(@nameを選択)間違った方法で
ストアドプロシージャが作成されていますか? – shmosel
@shmosel:はい、作成されます。 show procedure statusを使用してチェックします。そこに私は "WhoAreThey"を1つのエントリとして見ることができます –
最初のパラメータは整数で、あなたはそれに文字列を設定しています。問題ありますか? – PVR