JDBC中的序数绑定和命名绑定是什么? 在调用PL / SQL过程时,我得到了一个异常
java.sql.SQLException:不允许操作:无法合并序数绑定和命名绑定!
答案 0 :(得分:7)
例如,在Oracle中,您可以使用PL / SQL代码编写存储过程,如:
CREATE PROCEDURE remove_emp (employee_id NUMBER) AS
tot_emps NUMBER;
BEGIN
DELETE FROM employees
WHERE employees.employee_id = remove_emp.employee_id;
tot_emps := tot_emps - 1;
END;
/
当你从Java调用它时,你使用如下代码:
CallableStatement cs = conn.prepareCall("{call remove_emp(employee_id)}");
cs.setInt(1, 42); // ordinal binding, or
cs.setInt("employee_id", 42); // named binding
只有一个论点,选择无关紧要。但是,你不能混合技术。
CallableStatement cs = conn.prepareCall("{call xyzzy(plugh, bedquilt)]");
cs.setInt(1, 42); // ordinal binding, and
cs.setInt("plugh", 1729); // named binding
cs.executeQuery(); // throws
答案 1 :(得分:1)
序数表示索引。按名称命名。
Google search表明,这可能会以多种方式滥用API,因此如果不看到您的代码,就无法猜出您陷入了哪一种。