Resumen del uso del cursor de Oracle
Los cursores de Oracle se dividen en cursores de visualización y cursores implícitos. Cursor de visualización (cursor explícito): el cursor definido en el programa PL/SQL para consultas se denomina cursor de visualización (cursor implícito): sí. al cursor que no está definido en el programa PL/SQL y que el sistema Oracle asigna automáticamente cuando se utiliza la instrucción UPDATE/DELETE en PL/SQL. Muestre el cursor siguiendo los pasos ( ) definir ( ) abrir ( ) usar ( ) cerrar. use la demostración primero cree una prueba Use el script STUDENT de la tabla de la siguiente manera
Copie el código de la siguiente manera: () Use el bucle WHILE para procesar el cursor cree o reemplace PROCEDIMIENTO PROC_STU AS BEGIN Mostrar el cursor Use el bucle while declare Definir el nombre del cursor como cur_stu cursor cur_stu es seleccionar stuno stuname del orden del estudiante por stuno Definir variables para almacenar los datos recuperados por el cursor v_stuno varchar() v_stuname varchar(); el cursor y guárdelo en la variable fetch cur_stu en v_stuno v_stuname; mientras que cur_stufound está apuntado por el cursor. Si todavía hay filas de datos, continúe haciendo el bucle para imprimir el resultado dbms_output PUT_LINE(v_stuno|| gt; ||v_stuname); saque la fila actual señalada por el cursor y colóquela en la variable buscar cur_stu en v_stuno v_stuname; cerrar el bucle cur_stu; cerrar el extremo del cursor () Utilice IF ELSE en lugar del bucle WHILE para procesar la creación o reemplazo del cursor; PROCEDIMIENTO PROC_STU COMO COMENZAR Mostrar el cursor Usar if para juzgar declarar Definir el nombre del cursor como cur_stu cursor cur_stu es seleccionar stuno stuname del orden del estudiante por stuno; Definir variables para almacenar el cursor Los datos recuperados v_stuname varchar( ); abra el cursor cur_stu abra cur_stu; recupere la fila actual del cursor y guárdela en una variable busque cur_stu en v_stuno v_stuname; bucle si cur_stufound entonces si hay filas de datos apuntadas por el cursor cur_stu, imprima el resultado dbms_output PUT_LINE(v_stuno|| gt; ||v_stuname); continúe buscando la línea actual señalada por el cursor y colóquela en la variable fetch cur_stu en v_stuno v_stuname; de lo contrario, finalice el ciclo; ) Utilice el bucle FOR para procesar el cursor, cree o reemplace PROCEDIMIENTO PROC_STU COMO COMENZAR Utilice for para mostrar el cursor
La declaración de bucle define el nombre del cursor como cur_stu cursor cur_stu es seleccionar stuno stuname del orden del estudiante por stuno; comenzar para stu en el bucle cur_stu dbms_output PUT_LINE(stu stuno|| gt; || stu stuname realiza una verificación implícita del final del bucle no encontrado automáticamente); Cerrar el extremo del cursor; END PROC_STU () Se usa comúnmente EXIT WHEN para procesar el cursor crear o reemplazar PROCEDIMIENTO PROC_STU _ AS BEGIN Muestra el uso del cursor cuando se declara el bucle Define el nombre del cursor como cur_stu cursor cur_stu es seleccionar stuno stuname del orden del estudiante por stuno; Definición La variable almacena los datos recuperados por el cursor v_stuname varchar( ); v_stuname varchar( ); comienza a abrir el cursor cur_stu abre el bucle cur_stu busca la línea actual del cursor y la almacena en la variable fetch cur_stu en v_stuno v_stuname; salir cuando cur_stunotfound todavía hay datos apuntados por la línea del cursor continúa repitiendo los resultados dbms_output PUT_LINE(v_stuno|| gt; ||v_stuname); cerrar cur_stu fin del cursor; demostración de uso crear o reemplazar PROCEDIMIENTO PROC_STU COMO COMENZAR Uso implícito del cursor actualizar conjunto de estudiantes stuname= Zhang Yanguang donde stuno= Si no hay coincidencia en la actualización, inserte un nuevo registro si SQLNOTFOUND luego inserte en los valores de estudiante (STUNO STUNAME AGE GENDER) ( Zhang Yanguang male); end if; END PROC_STU; Explique que todas las declaraciones SQL están en el contexto. Todo dentro del área es ejecutable porque hay un cursor que apunta al área de contexto. Este cursor es el cursor SQL. La razón es que no es necesario abrir y cerrar el cursor SQL en PL/SQL, pero se abre y cierra automáticamente al ejecutar UPDATE DELETE. En el ejemplo, el atributo de cursor SQLNOTFOUND se utiliza para juzgar el resultado de la ejecución de la instrucción UPDATE para determinar. si es necesario insertar nuevos registros lishixinzhi/Article/program/Oracle/201404/30540