Oracle绑定变量给出错误


SET SERVEROUTPUT ON
VARIABLE dept_id NUMBER
DECLARE
  max_deptno NUMBER(3);
  dept_name departments.department_name%TYPE :='Education';
BEGIN
  SELECT MAX(department_id)
  INTO max_deptno 
  FROM departments;
  DBMS_OUTPUT.PUT_LINE ('The maximum department no is : '  || max_deptno);
  :dept_id:=(max_deptno+10);
  INSERT INTO departments (department_name, department_id,location_id)
  VALUES(dept_name,  :dept_id, NULL);
  DBMS_OUTPUT.PUT_LINE ('The number of rows affected : '  || SQL%ROWCOUNT);

END;
/

错误报告:ORA-01400:不能插入NULL到("SYSTEM"."DEPARTMENTS"."DEPARTMENT_ID")ORA-06512:在第10行01400. 00000 - "不能在(%s)中插入NULL "*原因:
*行动:最大部门号:190

我得到这个错误,而试图执行绑定变量在oracle语句。但是如果我放了一些值而不是绑定变量,我就得到了这个插入语句。我哪里做错了?

我认为bind变量的值只有在pl/sql块完成时才会设置。它可能必须正常终止。

一种解决方案是在插入中使用max_deptno+10而不是:dept_if。更好的解决方案是创建另一个pl/sql变量,并在insert语句中使用它。

new_dept_id := max_deptno+10;
:dept_id := new_dept_id;

您还必须更改INSERT语句:


INSERT INTO departments (department_name,department_id,location_id)
    VALUES(dept_name, new_dept_id, NULL);

我认为这个错误是由于您在启动程序中使用绑定变量而没有使用set autoprint on而获得的。

相关内容

  • 没有找到相关文章

最新更新