什么是JDBC中的序列绑定和命名绑定

时间:2013-06-04 18:04:24

标签: java jdbc

JDBC中的序数绑定和命名绑定是什么? 在调用PL / SQL过程时,我得到了一个异常

java.sql.SQLException:不允许操作:无法合并序数绑定和命名绑定!

2 个答案:

答案 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,因此如果不看到您的代码,就无法猜出您陷入了哪一种。