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

Mar*_*sad 2 java jdbc

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

java.sql.SQLException:不允许操作:序号绑定和命名绑定不能组合!

Eri*_*low 8

例如,在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;
/
Run Code Online (Sandbox Code Playgroud)

当您从Java调用它时,您使用如下代码:

CallableStatement cs = conn.prepareCall("{call remove_emp(employee_id)}");
cs.setInt(1, 42);             // ordinal binding, or
cs.setInt("employee_id", 42); // named binding
Run Code Online (Sandbox Code Playgroud)

只有一个参数,选择无关紧要.但是,你不能混合技术.

CallableStatement cs = conn.prepareCall("{call xyzzy(plugh, bedquilt)]");
cs.setInt(1, 42);         // ordinal binding, and
cs.setInt("plugh", 1729); // named binding
cs.executeQuery();        // throws
Run Code Online (Sandbox Code Playgroud)