4

什么是 JDBC 中的序数绑定和命名绑定?在调用 PL/SQL 过程时出现异常

java.sql.SQLException: operation not allowed: 序数绑定和命名绑定不能合并!

4

2 回答 2

11

例如,在 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
于 2013-06-04T19:35:03.677 回答
2

序数表示按索引。以名字命名的意思。

谷歌搜索显示,这可能会以多种方式滥用 API,因此如果没有看到您的代码,就不可能猜出您属于哪一种。

于 2013-06-04T18:12:51.637 回答