什么是 JDBC 中的序数绑定和命名绑定?在调用 PL/SQL 过程时出现异常
java.sql.SQLException: operation not allowed: 序数绑定和命名绑定不能合并!
例如,在 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
序数表示按索引。以名字命名的意思。
谷歌搜索显示,这可能会以多种方式滥用 API,因此如果没有看到您的代码,就不可能猜出您属于哪一种。