Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Tutorial depuración código plsql con Sqldeveloper
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Bueno, voy a hacer un tutorial para explicar el tema de depuración que lo habéis pedido algunos.
00:00:00
Voy a hacer la depuración de una función de un disparador y luego voy a coger un trozo de código
00:00:12
y lo que voy a hacer es meterlo en un procedimiento y hacer la depuración.
00:00:19
Bien, mirad, lo primero de todo para poder hacer la depuración necesitamos tener unos permisos, entonces yo lo que voy a hacer es que voy a entrar aquí como usuario system y voy a conceder esos dos permisos y los dos permisos son estos que veis aquí que son el debug connect session y el debug any procedure, los dos para el usuario, ¿vale?
00:00:23
Entonces, lo que voy a hacer es que voy a entrar aquí, me voy a conceder ese permiso, me voy a conceder este otro permiso.
00:00:49
Si en estos dos permisos en la base de datos no podemos hacer la depuración del código.
00:00:58
¿De acuerdo? Entonces, de esta manera ya tengo los dos permisos.
00:01:04
Y ahora lo que voy a hacer es, lo primero de todo es depurar la función.
00:01:09
Entonces, para depurar la función, lo que voy a hacer es que voy a coger una función de las que tengo aquí, ¿vale?
00:01:13
La función está, que el otro día estuvimos viendo un poco, que al final no terminé de compilarlo con el disparador.
00:01:20
Y lo que voy a hacer es que le voy a dar aquí a copiar la función.
00:01:27
Me voy al developer.
00:01:35
Vale, la copio.
00:01:38
La copio y la función.
00:01:44
Solamente quiero la función.
00:01:45
A ver.
00:01:47
Solamente quiero la función.
00:01:49
La pongo aquí.
00:01:51
Y la compilo.
00:01:54
y entonces a partir de este momento, aquí en las funciones, me aparece la función ExisteClave.
00:01:56
Esto es una función y entonces como tal, vemos que recibe un parámetro y tiene que devolver un error
00:02:02
y entonces es lo que vamos a intentar depurar.
00:02:07
Bien, entonces para ello, una vez que ya hemos hecho esto, pinchamos en el propio nombre de la función
00:02:13
y nos sale esta pantalla que veis aquí ahora.
00:02:20
entonces
00:02:25
yo voy a hacer lo siguiente
00:02:27
mirad, aquí en ejecutar
00:02:30
tenemos
00:02:33
las opciones
00:02:34
que tenemos de poner puntos de ruptura
00:02:36
de quitar puntos de ruptura y demás, mirad, yo he puesto
00:02:38
el punto de ruptura, si le damos
00:02:40
a F5
00:02:42
lo ponemos, el punto de ruptura
00:02:43
o lo quitamos, lo pongo el punto de ruptura
00:02:46
y puedo poner otro punto de ruptura aquí
00:02:48
vale, entonces si yo lo pongo aquí
00:02:50
en el begin, pues se va a parar ahí
00:02:52
la ejecución de la función y yo voy a poder ir viendo
00:02:53
las líneas. Entonces, al principio lo voy a poner ahí, voy a quitar
00:02:57
esta línea de aquí. Bien, y ahora lo que voy a hacer es darle a este
00:03:01
icono de aquí, ¿vale? Aquí tenéis una opción que es
00:03:05
compilar para depuración también, ¿vale? Entonces, ahora lo que voy a hacer es darle
00:03:09
al bichito este que es para depurar. Mirad, aparece esta ventana
00:03:12
y en esta ventana lo que me permite es introducir
00:03:18
el valor de entrada para la función. Es decir, yo puedo testear esta función dándole distintos valores.
00:03:21
Esta función en concreto lo que hace es que si nos vamos al código, lo que vemos es que lanza una
00:03:29
seller contra la tabla de instrumentos. Entonces yo voy a abrir la tabla de instrumentos.
00:03:38
A ver, un segundín antes de hacer la depuración. Voy a abrir la tabla de instrumentos y aquí voy a ver
00:03:43
los códigos que tienen los instrumentos
00:03:51
porque es con lo que trabaja la función
00:03:54
entonces me voy otra vez a la pestaña de la función
00:03:55
le doy a depurar
00:03:57
y por ejemplo
00:03:59
uno de los códigos que yo tenía
00:04:02
era el valor 1, 2, 3
00:04:03
a ver
00:04:05
perdón
00:04:08
aquí, en el valor de entrada
00:04:10
pincho y ahora voy a meter el valor
00:04:11
1, 2, 3, vale, le doy a aceptar
00:04:14
bueno, ahora aquí me pide
00:04:16
me pide la contraseña
00:04:18
de la conexión, no, esto
00:04:21
creo que hay un modo de evitarlo
00:04:24
vale, y mirad, ahora mismo se ha parado
00:04:25
en el punto de ruptura, entonces yo, para seguir
00:04:28
avanzando línea a línea
00:04:30
lo que tengo que pulsar es sobre F8
00:04:32
entonces pulso sobre F8
00:04:33
bien, si le doy aquí a datos
00:04:36
lo que estoy
00:04:37
viendo es el valor de
00:04:39
las variables, vale, entonces hemos
00:04:41
abierto el cursor
00:04:43
ahora entramos en el
00:04:44
bucle del cursor, recuperamos
00:04:47
la primera línea,
00:04:49
¿vale? Entonces, si os dais cuenta,
00:04:52
yo
00:04:54
lo que voy, las variables
00:04:55
que yo tengo aquí son nada más que el
00:04:57
cursor. Entonces,
00:04:59
el cursor y el
00:05:02
valor de la i, mirad,
00:05:05
el i, lo que
00:05:07
recupero con el cursor lo estoy guardando en la
00:05:09
variable i,
00:05:11
¿vale? Que la variable i es de
00:05:13
tipo campo código de la tabla
00:05:15
Entonces yo le doy a F8, voy pasando así, vais dando cuenta de las vueltas, o sea, vamos dando vueltas y demás. Ahora ya, si ejecuto esta línea, me doy cuenta de que el número de columnas que me ha devuelto el cursor es cero.
00:05:17
entonces estoy
00:05:42
cerrando, es mayor que 0
00:05:44
perdón, luego ha recuperado
00:05:46
vale, y entonces fijaros que
00:05:47
lo que hacemos es que estamos devolviendo
00:05:50
un valor verdadero, sigo aquí
00:05:52
con F8 y ya ha terminado la función
00:05:54
fijaros que se ha ido a la última
00:05:56
línea, bien, si yo lo doy aquí a ejecutar
00:05:58
y le doy a reanudar
00:06:00
volvemos a partir de 0, voy a
00:06:01
volver a hacer la depuración, ahora voy a inventarme
00:06:04
un código, pues el 777
00:06:06
que no está ahí, vale, entonces
00:06:08
me voy a ir aquí, le doy a
00:06:09
otra vez a depurar, ahora en el valor de entrada
00:06:12
fijaros que se ha quedado ya antes, voy a darle el valor 7, 7, 7
00:06:16
le doy a aceptar, me pide otra vez la clave
00:06:20
esto es lo que os digo, creo que de alguna manera, de que no la pida
00:06:24
siempre, pero bueno, en cualquier caso, le doy a F8, se ha parado en el punto de ruptura
00:06:28
le doy a F8, entro aquí
00:06:31
ahora me he salido, fijaros que no ha dado ninguna vuelta al bucle, va a valorar
00:06:35
eso, no ha devuelto ninguna fila, se sale del if, es decir, no ha devuelto ninguna fila
00:06:42
que coincida con esa clave y entonces sacamos el cursor y ahora lo que estamos devolviendo
00:06:47
es el valor falso. Y fijaros aquí abajo cómo se ve que el valor que ha devuelto es el valor
00:06:52
falso. Ahora lo que voy a hacer es con un trozo de código normal y corriente. Con un
00:07:00
trozo de código, yo tengo aquí
00:07:09
por ejemplo el de ejemplo tablas, entonces yo
00:07:11
lo que recomiendo es meter esto en un procedimiento
00:07:13
para si queremos depurarlo
00:07:15
entonces copiamos el código
00:07:17
nos vamos a
00:07:19
aquí y si le damos a procedimientos
00:07:21
le damos al botón
00:07:23
derecho sobre procedimientos
00:07:25
vale, nuevo procedimiento
00:07:27
le damos un nombre, pues lo vamos a llamar
00:07:29
test porque es un procedimiento que
00:07:31
vamos a utilizar para testear código
00:07:33
y ahora aquí dentro
00:07:35
del begin.jl
00:07:37
Yo lo que hago es copiar el código. Esta línea de aquí la quitamos, ¿vale? Porque esa línea no va dentro del procedimiento, el set server o botón lo quitamos y ahora tengo aquí esta opción, ¿vale? Que es compilar y tengo la opción de, perdón, tengo la opción de compilar para depuración, ¿vale? Le damos a compilar para depuración y ahora vamos a ejecutar el código.
00:07:38
Pero antes de ejecutar el código lo que tenemos que hacer es poner un punto de ruptura. Entonces si lo ponemos aquí en el begin, le damos a F5, hemos puesto el punto de ruptura, ahí se va a parar el código durante la depuración.
00:08:03
Y ahora lo que hacemos es que le damos a depurar. Le damos a aceptar, metemos la contraseña para la conexión y ahora se ha parado ahí. ¿De acuerdo? Entonces, si yo ahora voy pasando con el... a ver, la contraseña la he cogido mal, me está avisando aquí.
00:08:14
vamos a darle otra vez a depurar
00:08:43
a ver, ha tenido la mayúscula activada
00:08:45
vale, ahora mira, se ha parado
00:08:50
en el punto de ruptura, tengo aquí
00:08:55
los datos de las
00:08:57
de las variables
00:08:59
de acuerdo
00:09:00
a ver
00:09:02
ahora le voy
00:09:04
dando F8
00:09:07
me va diciendo los valores
00:09:08
que va tomando la M
00:09:11
me va diciendo el valor que va tomando
00:09:13
la I, fijaros
00:09:15
¿Veis? Es el primero que ha recuperado, me dice que es el de ID 1111
00:09:17
Estoy aquí en esta parte del ratón que veis
00:09:24
Si lo de F8 se incrementa el contador
00:09:26
Ahora la M vale 2
00:09:30
Entonces entramos en el bucle
00:09:34
Ahora ha leído nuevo, fijaros aquí, ha leído nuevo
00:09:36
Uno nuevo y así sucesivamente
00:09:39
Y voy dándole vueltas al bucle y viendo cómo van cambiando las variables
00:09:42
Bien, y si quiero en un momento determinado parar, porque ya he depurado el código, le doy aquí a F9, reanudar en NAMP y ya está.
00:09:46
Bien, y ahora para finalizar, lo que quiero hacer es depurar un disparador, ¿de acuerdo?
00:09:54
Entonces voy a cerrar esto.
00:10:01
Yo tengo aquí un disparador ya preparado.
00:10:03
Si no, en cualquier caso, os vais aquí a la parte izquierda de la pantalla y aquí veis los disparadores que hay.
00:10:06
Yo lo voy a cerrar.
00:10:11
este, quiero hacer
00:10:12
el de insertar
00:10:14
nuevas nacionalidades, le doy aquí al código
00:10:16
bien, me aparece, este ya está
00:10:18
compilado y demás, pues si no igual le daríamos aquí
00:10:20
para compilar, para depuración, bien, tiene un punto
00:10:22
de ruptura puesto aquí, yo el
00:10:24
punto de ruptura, este de aquí lo voy a quitar
00:10:26
con el F5, pongo y quito puntos
00:10:28
de ruptura y aquí de nuevo
00:10:30
le doy con el F5 para ponérmelo
00:10:32
en el BGIT y entonces lo que voy a hacer es
00:10:34
depurarlo
00:10:36
vale
00:10:38
entonces, importante ahora
00:10:39
lo siguiente, mirad, aquí me pone los valores de entrada
00:10:42
y me sale aquí la línea que se intenta insertar en la tabla
00:10:45
de músicos que es lo que va a hacer que salte
00:10:50
el disparador, entonces yo lo que tengo que hacer aquí es escribir los valores
00:10:52
que quiero, vale, vamos a meter una nacionalidad
00:10:58
y aquí, esto es la experiencia
00:11:03
vamos a meter un valor numérico y por último el instrumento, subliterar
00:11:09
una cadena y lo
00:11:12
meto de esta
00:11:14
manera, de acuerdo
00:11:15
voy a cambiar la clave porque
00:11:18
es una con la que he estado probando antes, no vaya a ser
00:11:20
que este
00:11:23
que se repita, y ahora lo que hago
00:11:24
es que le doy a aceptar, o sea, importante
00:11:26
cuando le he dado de pura al disparador me sale esta
00:11:28
ventana y aquí, donde pone bloque
00:11:30
PLSQL, aquí como lo que vamos
00:11:32
a hacer es una inserción en la tabla músico, lo que yo
00:11:34
puedo hacer es meter los valores
00:11:36
de los cuatro campos, en este caso 1, 2, 3
00:11:38
4, 5, 1, 2, 3, 4, 5
00:11:41
que quiero insertar, que quiero
00:11:43
probar con el disparador, entonces le doy a aceptar
00:11:45
metemos la contraseña
00:11:47
¿vale? y fijaros que se ha
00:11:49
parado en el punto de ruptura
00:11:54
que yo le he puesto, que es el begin del código
00:11:56
¿vale? entonces si nos vamos por aquí
00:11:58
hacemos un
00:12:00
un F8, fijaros
00:12:02
antes de darle al cursor
00:12:04
si le damos aquí a new
00:12:05
y acordaros que en un disparador
00:12:08
cuando hacemos referencia con dos puntos
00:12:10
new, lo que estamos indicando son
00:12:12
los valores del registro que queremos insertar.
00:12:14
En este caso, como no es una modificación, es de lo único que nos tenemos que preocupar.
00:12:19
Bien, si le doy a F8, abro el cursor, de acuerdo, entonces aquí en total, fijaros que, bueno, todavía no he ejecutado esta línea,
00:12:26
ejecuto esta línea y ahora
00:12:39
lo que estoy guardando en total es
00:12:41
el select count de las nuevas nacionalidades
00:12:43
y tiene cero, quiere decir
00:12:46
que la tabla nuevas nacionalidades no ha
00:12:47
encontrado nada, entonces
00:12:49
metemos por aquí, si total
00:12:51
es cero, eso es cierto y entonces ahora
00:12:53
lo que voy a hacer es insertar en la tabla
00:12:55
nuevas nacionalidades, los valores
00:12:57
que
00:12:59
de la nueva
00:13:00
nacionalidad y el número de valores
00:13:03
¿de acuerdo? y de esta manera
00:13:05
ejecutamos el
00:13:07
disparador
00:13:09
y terminamos. Y esta es la
00:13:10
manera, poniendo puntos de ruptura, la
00:13:13
manera que tenéis para poder
00:13:15
depurar el código. Ya digo, si
00:13:17
tenemos trozos de código
00:13:19
que no vayan, o sea, que estén
00:13:20
en un bloque principal, lo que podemos hacer es crear
00:13:23
un procedimiento que se llama test,
00:13:25
los metemos ahí y ahí podemos poner
00:13:27
un punto de ruptura y ir probando
00:13:29
el código línea a línea. Bueno, pues
00:13:30
espero que esto os haya resultado de
00:13:33
utilidad.
00:13:35
Gracias.
00:13:37
- Autor/es:
- David Chiclana Abad
- Subido por:
- David C.
- Licencia:
- Dominio público
- Visualizaciones:
- 117
- Fecha:
- 27 de abril de 2020 - 19:29
- Visibilidad:
- Público
- Centro:
- IES ALONSO DE AVELLANEDA
- Duración:
- 13′ 39″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 32.57 MBytes