SQL> create or replace
  2  PROCEDURE get_teacherInfo (p_deptID IN t_teacher.deptID%TYPE DEFAULT null)
  3  AS
  4   v_cursorID INTEGER;   -- 游标ID
  5   v_select varchar2(200);    -- 查询SQL语句
  6   v_teaID VARCHAR2(15);     -- 教师编号
  7   v_teaName VARCHAR2(10);    -- 教师姓名
  8   v_dept VARCHAR2(20);    -- 教师所在院系
  9   v_selectResult INTEGER;    -- 游标执行语句返回结果
 10  BEGIN
 11   v_cursorID:= DBMS_SQL.OPEN_CURSOR;   -- 打开游标
 12   v_select:='SELECT teaID,teaName,dept FROM t_teacher WHERE deptID=:deptID';
 13   DBMS_SQL. PARSE (v_cursorID, v_select, DBMS_SQL.NATIVE);   -- 解析SQL
 14   DBMS_SQL. BIND_VARIABLE_CHAR (v_cursorID,:deptID, p_deptid);  -- 绑定变量
 15   DBMS_SQL. DEFINE_CLUMN (v_cursorId,1,v_teaID,15);     -- 获取的被选择列的对应值
 16   DBMS_SQL. DEFINE_CLUMN (v_cursorId,2,v_teaName,10);
 17   DBMS_SQL. DEFINE_CLUMN (v_cursorId,3,v_dept,20);
 18    v_selectResult:= DBMS_SQL.EXECUTE(v_cursorID);                   -- 执行SQL
 19   LOOP
 20   IF DBMS_SQL.FETCH_ROWS(v_cursorID)=0 THEN
 21   EXIT;
 22     END IF;
 23   DBMS_SQL.COLUMN_VALUE(v_cursorID,1,v_teaID);          -- 取得指定位置对应的值
 24   DBMS_SQL.COLUMN_VALUE(v_cursorID,2,v_teaName);
 25   DBMS_SQL.COLUMN_VALUE(v_cursorID,3,v_dept);
 26   END LOOP;
 27   DBMS_SQL.CLOSE_CURSOR(v_cursorID);                -- 关闭游标
 28   COMMIT;                            --提交事务
 29  EXCEPTION
 30   WHEN OTHERS THEN
 31   DBMS_SQL.CLOSE_CURSOR(v_cursorID);            -- 关闭游标
 32   RAISE;
 33  END;
 34  /警告: 创建的过程带有编译错误。
错误(14,43): PLS-00049: 错误的赋值变量 'DEPTID'SQL> desc t_teacher;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 TEAID                                     NOT NULL VARCHAR2(15)
 TEANAME                                   NOT NULL VARCHAR2(10)
 AGE                                       NOT NULL NUMBER(2)
 SEX                                       NOT NULL CHAR(2)
 DEPTID                                    NOT NULL VARCHAR2(15)
 DEPT                                      NOT NULL VARCHAR2(20)
 PROFESSION                                         VARCHAR2(10)
 SALARY                                    NOT NULL NUMBER(5)
 PENSION                                            NUMBER(5,2)SQL> spool off