Tutorial Consultas SQL SERVER (Procedimientos almacenados y cursores)

00:29:12
https://www.youtube.com/watch?v=2jqVALHB7iI

Ringkasan

TLDREn el video se explica en detalle el uso de procedimientos almacenados y cursores en SQL. Los procedimientos almacenados, también conocidos como SP (Stored Procedures), son secuencias de instrucciones SQL guardadas en el servidor de base de datos. Estas permiten recibir y proporcionar parámetros, facilitando la reutilización de código sin necesidad de reescribir instrucciones repetidamente. Un procedimiento almacenado se inicia con la creación de un procedimiento mediante la instrucción 'CREATE PROCEDURE', seguido por el nombre del procedimiento, y se definen los parámetros que vaya a recibir. Estos procedimientos son útiles para insertar datos como clientes de forma eficiente, mediante la ejecución de una sola línea de código con los datos necesarios. Además, se introduce el concepto de cursores en SQL, que son estructuras que permiten recorrer los resultados de una consulta fila por fila. Son útiles para operaciones complejas donde se requiere manipulación y análisis detallado a nivel de fila dentro de una consulta. La gestión de errores dentro de los procedimientos almacenados se realiza mediante TRY y CATCH, permitiendo manejar fallos y ejecutar operaciones de rollback si algo sale mal durante la ejecución.

Takeaways

  • 🗂️ Los procedimientos almacenados ayudan a reutilizar código SQL.
  • 💾 Se crean con 'CREATE PROCEDURE'.
  • ⚙️ Los cursores permiten manipular datos fila por fila.
  • ✅ Mejoran la eficiencia al no repetir el mismo código.
  • 🔁 Usan parámetros para operaciones dinámicas.
  • 🚨 TRY y CATCH manejan errores en ejecuciones.
  • ♻️ Transacciones aseguran cambios completos en la base de datos.
  • 📊 ALTER modifica un procedimiento almacenado ya existente.
  • 🌐 Pueden funcionar sin parámetros si así se define.
  • 🛠️ Importantes para tareas repetitivas y complejas en SQL.

Garis waktu

  • 00:00:00 - 00:05:00

    Explicación sobre procedimientos almacenados, su utilidad en guardar secuencias de SQL que pueden ser reutilizadas, permitiendo la inserción masiva de datos sin tener que reescribir código constantemente. Ejemplo de cómo se crea y utiliza un procedimiento almacenado para insertar clientes, resaltando la eficiencia que trae frente a la repetición del código de inserción para cada cliente.

  • 00:05:00 - 00:10:00

    Discusión sobre la alteración de procedimientos almacenados usando 'ALTER', lo que permite cambiar aspectos de un procedimiento sin eliminarlo y crearlo de nuevo. Se ejemplifica con ajustes en tipos de datos para teléfonos. Introducción a un nuevo procedimiento almacenado diseñado para mostrar clientes, aprovechando la lógica de programación con IF para manejar diferentes condiciones de visualización.

  • 00:10:00 - 00:15:00

    Se profundiza en el uso de la lógica condicional en procedimientos almacenados para evaluar y mostrar información específica de clientes. Ejemplo utilizando IF para decidir la visualización completa de la tabla de clientes o la de registros específicos según parámetros. Explicación sobre la gestión de un procedimiento sin parámetros.

  • 00:15:00 - 00:20:00

    Presentación del tema de cursores, que permiten analizar línea por línea el resultado de una consulta dentro de un procedimiento almacenado. Se enseña a declarar y manejar cursores para modificar registros de una tabla basándose en condiciones específicas, como cambiar contraseñas menores a un número de caracteres por la fecha actual. Uso de bucles para iteración sobre los resultados gestionados por cursores.

  • 00:20:00 - 00:29:12

    Ejemplo de consultas utilizando variables dentro de un procedimiento. Explicación de un bucle sencillo que imprime un mensaje varias veces utilizando una variable de conteo. Introducción breve a casos en consultas para manejar campos con condiciones específicas. Ejemplo de un CASE que condiciona la visualización según si las contraseñas cumplen ciertos criterios, mostrando mensajes de error si no los cumplen.

Tampilkan lebih banyak

Peta Pikiran

Video Tanya Jawab

  • ¿Qué es un procedimiento almacenado?

    Un procedimiento almacenado es una secuencia de instrucciones SQL almacenadas en la base de datos, que puede recibir y proporcionar parámetros.

  • ¿Cómo se crea un procedimiento almacenado?

    Se utiliza la sintaxis 'CREATE PROCEDURE' seguido del nombre del procedimiento y se definen los parámetros que recibirá.

  • ¿Qué es un cursor en SQL?

    Un cursor permite recorrer cada fila de un conjunto de resultados, realizando operaciones en cada fila individualmente.

  • ¿Cuándo utilizar procedimientos almacenados?

    Se utilizan cuando se necesita ejecutar un conjunto de instrucciones SQL de manera repetitiva y eficiente.

  • ¿Cómo modificar un procedimiento almacenado existente?

    Utilizando la palabra clave 'ALTER' en lugar de 'CREATE'.

  • ¿Cómo se ejecuta un procedimiento almacenado?

    Se utiliza la palabra clave 'EXECUTE' seguida del nombre del procedimiento, con los parámetros necesarios.

  • ¿Es necesario que un procedimiento almacenado siempre acepte parámetros?

    No, pueden diseñarse para no aceptar parámetros y ejecutar tareas predefinidas.

  • ¿Cómo funcionan los bucles en los procedimientos almacenados?

    Se utilizan para repetir un segmento de código hasta que se cumpla una condición determinada.

  • ¿Se pueden almacenar resultados de una consulta en una variable?

    Sí, se pueden almacenar utilizando DECLARE para definir la variable y SET para asignarle valores.

  • ¿Qué sucede si ocurre un error durante la ejecución de un procedimiento almacenado?

    Se puede manejar con TRY y CATCH, donde se intenta ejecutar y capturar errores para operaciones de rollback.

Lihat lebih banyak ringkasan video

Dapatkan akses instan ke ringkasan video YouTube gratis yang didukung oleh AI!
Teks
es
Gulir Otomatis:
  • 00:00:00
    Bueno ahora ya saliendo un poco no del
  • 00:00:02
    todo pero saliendo un poco del tema de
  • 00:00:04
    las consultas en profundidad les voy a
  • 00:00:07
    enseñar dos temas más que es el de
  • 00:00:10
    Procedimientos almacenados y el de
  • 00:00:12
    cursores un procedimiento almacenado que
  • 00:00:14
    también pueden encontrar internet como
  • 00:00:16
    SP no es más que una secuencia ordenada
  • 00:00:18
    de instrucciones sql que pueden recibir
  • 00:00:21
    y proporcionar parámetros provistos por
  • 00:00:23
    el usuario es decir guardan un conjunto
  • 00:00:26
    de un segmento de código
  • 00:00:28
    distribuciones a las cual uno podemos
  • 00:00:31
    pasar con parámetros y estas después se
  • 00:00:34
    mantienen para el resto de para el resto
  • 00:00:37
    en el servidor de base datos es decir la
  • 00:00:39
    pueden utilizar continuamente otros
  • 00:00:41
    programas y no hay que escribir de nuevo
  • 00:00:43
    las mismas instrucciones un montón de
  • 00:00:44
    veces y por eso yo había dicho en video
  • 00:00:47
    interior que por ejemplo guarden Cómo
  • 00:00:49
    insertar clientes se acuerdan que el de
  • 00:00:52
    bam B tran
  • 00:00:54
    incinto comit y después venía el Catch
  • 00:00:58
    bueno
  • 00:01:01
    se acuerdan que en un principio ustedes
  • 00:01:02
    para insertar cuando quer insertar
  • 00:01:04
    muchos clientes que tenían que agarrar
  • 00:01:05
    insertar Cliente por cliente y eso er un
  • 00:01:08
    trabajo recontra represado bueno a
  • 00:01:11
    través de los procedimientos almacenados
  • 00:01:13
    vos podés guardar este segmento de
  • 00:01:16
    código o sea de
  • 00:01:19
    inserción solo haciendo un cambio acá en
  • 00:01:21
    el momento valores Les explico por qué y
  • 00:01:24
    solamente ejecutar este pequeña línea
  • 00:01:28
    con los nuevos datos que ente podría ser
  • 00:01:30
    un programa est dentro de un bucle Y
  • 00:01:32
    esto es mucho más rápido que escribir
  • 00:01:33
    toda esta sentencia un montón de veces
  • 00:01:36
    por cada cliente que queramos ingresar
  • 00:01:39
    entonces un procedimiento almacenado
  • 00:01:41
    empieza como la creación de una tabla
  • 00:01:43
    qué queremos crear un procedimiento
  • 00:01:44
    entonces create procedure luego el
  • 00:01:47
    nombre del procedimiento almacen o sea
  • 00:01:49
    el nombre con el que va a ser utilizado
  • 00:01:50
    para llamar a este procedimiento Al
  • 00:01:52
    momento de ejecutarse Luego si se van a
  • 00:01:55
    aceptar parámetros como cualquier esto
  • 00:01:57
    es como cualquier función no de
  • 00:01:59
    programación uno sabe programar en Java
  • 00:02:01
    siempre es el tipo de datos bueno acá
  • 00:02:04
    men un tipo de dato que retor si es
  • 00:02:06
    público estático es create un
  • 00:02:08
    procedimiento almacenado el nombre y si
  • 00:02:11
    tiene parámetros a recibir en base de
  • 00:02:15
    datos una variable se indica a través de
  • 00:02:17
    el arroba
  • 00:02:19
    y acá van a los nombres los parámetros
  • 00:02:22
    recibir con su tipo de datos no hace
  • 00:02:25
    falta este gu bajo esto yo lo pongo para
  • 00:02:27
    diferenciar de lo que es el nombre de la
  • 00:02:29
    variable del procedimiento y los campos
  • 00:02:32
    de nuestra tabla pero en realidad el
  • 00:02:33
    nombre es cualquiera ni siquiera tiene
  • 00:02:36
    ni siquiera tiene que tener una relación
  • 00:02:37
    con el nombre después de lo que va a
  • 00:02:40
    hacer entonces acá un ejemplo hay una
  • 00:02:42
    variable dni o se aceptar un parámetro
  • 00:02:44
    que se va abordado en una variable dni
  • 00:02:46
    del tipo entero otra que es teléfono de
  • 00:02:49
    tipo barch y así hasta tipo
  • 00:02:52
    documento después de que se hace una
  • 00:02:54
    declaración de los parámetros viene el
  • 00:02:57
    As que dice Bueno este procedimiento
  • 00:02:59
    alado va a funcionar como y acá la
  • 00:03:02
    sentencia después de lo que quiera hacer
  • 00:03:04
    no en este caso va a ser para insertar
  • 00:03:06
    cliente para Agar cliente entonces
  • 00:03:08
    inicia un control de semento de código
  • 00:03:11
    crítico inicia una transacción para la
  • 00:03:13
    inserción de código dentro de clientes
  • 00:03:15
    en los campos de apellido nombre tipo
  • 00:03:17
    comento teléfono y dirección con los
  • 00:03:19
    valores y acá le tenemos que pasar el
  • 00:03:22
    mismo orden que corresponda los
  • 00:03:24
    parámetros o sea dni en este caso
  • 00:03:26
    corresponde dni después viene apellido y
  • 00:03:29
    acá en el parámetro en orden no sea
  • 00:03:31
    apellido acá tenemos que poner apellido
  • 00:03:33
    y nombre entienden y así según
  • 00:03:37
    corresponda Bueno terminamos los valores
  • 00:03:39
    si sale todo correcto Cómo se llama
  • 00:03:43
    realizalo que que lo que lo guarde que
  • 00:03:46
    lo confirme que lo que que lo guarde en
  • 00:03:48
    la base de datos si no termina el try y
  • 00:03:53
    inicia el Catch que se acuerdan que era
  • 00:03:55
    para cuando dentro del semento este
  • 00:03:57
    crítico que podía surgir un error
  • 00:03:59
    saltaba Catch imprimí error al ingresar
  • 00:04:02
    los datos para el cliente nuevo
  • 00:04:05
    específicamente si el error de mensaje
  • 00:04:07
    de que te va a devolver mot base de
  • 00:04:09
    datos que est AC la función rollback
  • 00:04:12
    para que borre esa instalación de datos
  • 00:04:13
    temporal que inició con la transacción y
  • 00:04:15
    que no guarde la base de datos y termina
  • 00:04:18
    el
  • 00:04:19
    Catch hasta acá tienen su primer
  • 00:04:21
    procedimientos almacenados que les sirve
  • 00:04:23
    para insertar clientes Cómo ejecutas un
  • 00:04:26
    procedimiento almacenado a través de la
  • 00:04:28
    palabra palabra clave que es ejecutar el
  • 00:04:30
    nombre del procedimiento almacenado
  • 00:04:32
    ejecutar Y si los parámetros separados
  • 00:04:35
    por coma según corresponde entre
  • 00:04:37
    comillas no si son caracteres o enteros
  • 00:04:39
    o otro tipo de dato en como se tiene que
  • 00:04:43
    insertar configur m y eh Nada más acá no
  • 00:04:48
    va entre paréntesis como sera
  • 00:04:49
    programación con esta simple línea lo
  • 00:04:51
    que hace es ejecutar el procedimiento
  • 00:04:53
    ahora bien acá en este procedimiento
  • 00:04:56
    almacenado se pusieron parámetros un
  • 00:04:57
    procedimiento almacenado no tiene por
  • 00:04:59
    qué obligatoriamente aceptar parámetros
  • 00:05:01
    para entrar sino que simplemente pod
  • 00:05:03
    poner al cliente si no hubiese ningún
  • 00:05:05
    parámetro que insertar y todo esto iría
  • 00:05:07
    no va ahora vamos a un ejemplo más
  • 00:05:10
    adelante Así que una vez que tienen
  • 00:05:14
    ustedes creado un procedimiento
  • 00:05:15
    almacenado para alterar un procedimiento
  • 00:05:17
    almacenado solamente tien que cambiar
  • 00:05:18
    esta palabra por alter o sea ustedes se
  • 00:05:20
    equivocan por ejemplo acá por hertel el
  • 00:05:23
    tipo barar 15 porque los teléfonos
  • 00:05:25
    cuando qu la tenían 15 y acá pusieron 10
  • 00:05:28
    sea estaban disminuyendo la cantidad
  • 00:05:30
    números de letras que va a aceptar Si
  • 00:05:32
    nuestra base de datos puede aceptar más
  • 00:05:34
    solo tiene que cambiar acá alter y así
  • 00:05:37
    bueno pued alterar cualquier parte del
  • 00:05:38
    procedimiento
  • 00:05:41
    almacenado bueno acá hay un hice otro
  • 00:05:45
    procedimiento armon de ejemplo que lo
  • 00:05:47
    que hace es ver client no y les pongo un
  • 00:05:50
    temita más así vamos completando un poco
  • 00:05:52
    nuestros
  • 00:05:54
    conocimientos acá este procedimiento ya
  • 00:05:56
    lo tenía creado y para mostrarles algo
  • 00:05:59
    que se ifi no O sea altero alterar el
  • 00:06:02
    procedimiento almacenado de tal nombre
  • 00:06:05
    tiene este procedimiento alterado acepta
  • 00:06:06
    el parámetro apido y nombre del tipo
  • 00:06:08
    marchar y va a funcionar como inicio el
  • 00:06:11
    segmento de código crítico esto ya es
  • 00:06:14
    una costumbre no no hace falta siempre
  • 00:06:17
    pongan el Catch y evaluo este lo que va
  • 00:06:21
    a hacer va evaluar si el parámetro no
  • 00:06:23
    hay nada va a ser que muestre toda la
  • 00:06:25
    tabla clientes si se manda un nombre de
  • 00:06:28
    un cliente específico nombre un cliente
  • 00:06:30
    específico va a mostrar solo los
  • 00:06:32
    clientes que tengan ese nombre y Bueno y
  • 00:06:35
    qué tengo que evaluar si se manda si se
  • 00:06:37
    recibe como parámetro la nada o sea un
  • 00:06:39
    espacio o nada o si se recibe finalmente
  • 00:06:42
    un nombre para eso qué es el If como
  • 00:06:45
    cualquier parte de progamación
  • 00:06:47
    si la variable o sea lo que ain que el
  • 00:06:50
    parámetro aceptado por el procedimiento
  • 00:06:52
    almacenado es nada o sea es un carácter
  • 00:06:56
    vacío iniciar porque acá no s si ustedes
  • 00:07:00
    saben programar Pero bueno todos los
  • 00:07:01
    lenguajes de programación los bu siempre
  • 00:07:05
    inician con una llave y cuando terminan
  • 00:07:07
    los operación c cre men los videos pero
  • 00:07:11
    acá Bueno está el y que a diferencia del
  • 00:07:14
    try menos de ser el adelante en los If
  • 00:07:17
    el va después entonces si el parámetro
  • 00:07:20
    apellid nbre la variable ya vamos a
  • 00:07:22
    decir es
  • 00:07:24
    nada acá es un igual Solo que son igual
  • 00:07:28
    igual para indicar el
  • 00:07:31
    la igualación la comparación de si son
  • 00:07:33
    iguales acá es uno c
  • 00:07:35
    igual inicial If o sea el rombito si
  • 00:07:39
    vamos a algoritmo de flujo y pongo la
  • 00:07:43
    consulta que quiero que ejecute entonces
  • 00:07:46
    mostrame todos los campos de la tabla
  • 00:07:48
    cliente Cerramos el If porque yo no
  • 00:07:51
    quiero que haga más nada Y si de lo
  • 00:07:54
    contrario O sea si no entró a lif porque
  • 00:07:55
    no es caráter vacío inicial el y hace la
  • 00:08:01
    consulta o sea seleccion todos los
  • 00:08:03
    campos de la tabla cliente donde el
  • 00:08:06
    campo apellido o sea bueno si el campo
  • 00:08:09
    apellido igual a lo que se recibió por
  • 00:08:11
    parámetro cerras el els O sea cerr la
  • 00:08:14
    llave del
  • 00:08:15
    els cerras el try acá decía que es al
  • 00:08:19
    revés solo cambia el orden pero bueno
  • 00:08:21
    acord como acordarse memoria iniciamos
  • 00:08:24
    el Catch imprimimos el error con el
  • 00:08:26
    mensaje de error y terminamos el CCH
  • 00:08:30
    acá pu entonces o se ejecuta Así que
  • 00:08:33
    mostraría toda la tabla ven o por
  • 00:08:35
    ejemplo pongo nombre de un de un cliente
  • 00:08:40
    y solo tendría que mostrarme ese cliente
  • 00:08:44
    entienden y si no
  • 00:08:47
    está el cliente no muestra nada porque
  • 00:08:51
    no encontró o sea acá donde habamos
  • 00:08:53
    puesto donde entra al el no queda el
  • 00:08:56
    pero cuando hac
  • 00:08:58
    encuentra
  • 00:09:00
    esto es un poco ya de Procedimientos
  • 00:09:03
    almacenados con uno tema que es el de
  • 00:09:05
    que también puede ser aplicado en
  • 00:09:07
    cualquier consulta no es solamente
  • 00:09:08
    procedimientos basados acá lo hice en un
  • 00:09:11
    procedimiento pero ustedes en una
  • 00:09:12
    consulta simplemente pueden implementar
  • 00:09:14
    como fue implementar un momento el Case
  • 00:09:16
    cuando sac hicimos lo de stock bueno
  • 00:09:20
    otro procedimiento este lo hice más que
  • 00:09:23
    nada no es algo muy útil pero para ver
  • 00:09:26
    có pueden usar dentro una variable
  • 00:09:27
    dentro de una consulta visualización de
  • 00:09:30
    registros Entonces altero el
  • 00:09:32
    procedimiento de alcen pues ya lo tenía
  • 00:09:33
    creado cantidad de clientes ven que en
  • 00:09:35
    este no recibe ni un parámetro que yo
  • 00:09:37
    lece antes que no es obligatoriamente
  • 00:09:39
    siempre aceptar un parámetro acá Este
  • 00:09:41
    procado simplemente se ejecuta de esta
  • 00:09:43
    manera y no acepta ningún
  • 00:09:45
    parámetro este Proc entonces alterar el
  • 00:09:47
    procedimiento cantidad cliente que
  • 00:09:49
    funciona como declaro con declare
  • 00:09:53
    declaras una variable para el
  • 00:09:55
    procedimiento almacenado para la
  • 00:09:56
    consulta también va con el ara
  • 00:10:00
    llamada de como el nombre que va a tener
  • 00:10:02
    la variable y el tipo de dato si ustedes
  • 00:10:05
    quieren sarle un valor o sea ponerle un
  • 00:10:08
    valor a esta variable que tienen que
  • 00:10:10
    hacer y no está dentro de una consulta
  • 00:10:11
    tien que poner set el nombre de la
  • 00:10:14
    variable con siempre con el arroba
  • 00:10:16
    recuerden porque es como motor de base
  • 00:10:18
    de datos sabe que es una variable y el
  • 00:10:20
    nuevo valor imprimo el valor de variable
  • 00:10:23
    para saber qué valor tiene el
  • 00:10:26
    principio selecciono ahora la
  • 00:10:30
    selección la visación de registro
  • 00:10:32
    entonces selecciona contar los dni
  • 00:10:35
    guardalos en esta
  • 00:10:37
    variable de la tabla clientes una vez
  • 00:10:40
    más selecciona guardando en esta
  • 00:10:43
    variable contando los dni de la tabla
  • 00:10:46
    cliente acuerden que acá gres siempre se
  • 00:10:49
    trabaja sobre esta columna y este línea
  • 00:10:52
    le estoy ensenando además Cómo utilizar
  • 00:10:55
    una variable para guardar un resultado
  • 00:10:57
    de un segmento de una ición de
  • 00:11:01
    registros qué más bueno como este
  • 00:11:05
    procedimiento almacenado lo que va a
  • 00:11:06
    hacer es evaluar si ya superaste los 10
  • 00:11:08
    o no clientes dice y después mostrate
  • 00:11:11
    cuántos clientes tenés si es que los
  • 00:11:14
    superaste agarra Y dice Bueno entonces
  • 00:11:16
    la variable cantidad que fue modificada
  • 00:11:19
    acá es mayor a 10 Si contó más de 10
  • 00:11:23
    documentos porque se acuerdan que tenía
  • 00:11:25
    la primer x de clientes Entonces o sea
  • 00:11:28
    comen
  • 00:11:30
    imprimí superior los 10 clientes Ahora
  • 00:11:32
    tenés imprimí contenido de cantidad y
  • 00:11:36
    cerras el lif acá también como ven no
  • 00:11:38
    siempre un If como antes tiene que estar
  • 00:11:40
    acompañado un el un If puede hacer algo
  • 00:11:42
    y listo y terminar ahí como un Case
  • 00:11:46
    puede tener más de un buen
  • 00:11:49
    entienden o un solo
  • 00:11:54
    buen pero no quiero marar eso ya volver
  • 00:11:56
    antes ya creo que lo
  • 00:11:58
    entendieron si yo ejecuto esto como
  • 00:12:01
    tengo menos de 10 clientes insertados te
  • 00:12:04
    dice no tengo más de 10 clientes dice 10
  • 00:12:07
    superor los 10 clientes Ahora tienes
  • 00:12:10
    cuat y perdón no mala mía si ejecutamos
  • 00:12:14
    la alteración por hab hecho una prueba
  • 00:12:16
    tenemos cuatro clientes no tiene candar
  • 00:12:20
    te va a mostrar que tiene 10 y no entra
  • 00:12:22
    lif queda acá esto lo hace y cuando
  • 00:12:26
    viene acá como noos termina
  • 00:12:30
    si yo pongo menor a 10 que como estaba
  • 00:12:32
    antes de hacer la
  • 00:12:34
    alteración para que si me lo
  • 00:12:37
    muestre y acá pongo que no superó los
  • 00:12:43
    10 decir cuántos clientes tengo y el
  • 00:12:45
    cartón no supera los
  • 00:12:48
    10 10 no super los 10 Ahora tenés
  • 00:12:52
    cu y finalmente lo que viene es el tema
  • 00:12:55
    de cursores que es un tema bastante
  • 00:12:58
    bueno que te permite trabajar o sea el
  • 00:13:02
    procedimiento trabaja una consulta en
  • 00:13:04
    total acá puedes ir analizando línea por
  • 00:13:06
    línea de una consulta y eso La verdad
  • 00:13:09
    para ciertas situaciones
  • 00:13:11
    está
  • 00:13:13
    piola es como un procedimiento
  • 00:13:15
    almacenado o sea está dentro un
  • 00:13:17
    procedimiento almacenado y eh este ya lo
  • 00:13:20
    tengo creado Así que altero procedura o
  • 00:13:23
    sea alterar el procedimiento ya creado
  • 00:13:25
    llamado pruebas cursores que funciona
  • 00:13:28
    como declaro una variable del tipo
  • 00:13:32
    entero que en este en este caso es
  • 00:13:34
    entero no siempre ti entero no por este
  • 00:13:36
    caso yo lo que voy a hacer es evaluar en
  • 00:13:39
    la tabla cliente a los clientes tiene
  • 00:13:41
    una contraseña si esa contraseña es
  • 00:13:42
    menor a cuatro caracteres quiero que la
  • 00:13:45
    cambio por la fecha actual Y de esa
  • 00:13:46
    manera darme cuenta bueno queé clientes
  • 00:13:49
    no no pus una correcta
  • 00:13:52
    contraseña o sea no s para esto para que
  • 00:13:54
    para un ejemplo entonces en esta
  • 00:13:56
    variable yo voy a guardar el lo que
  • 00:13:59
    después me va a dar el cursor a su vez
  • 00:14:01
    declaro una variable llamada cursor de
  • 00:14:04
    usuario que es del tipo cursor o sea
  • 00:14:07
    como esta tiene tipo entero est tipo
  • 00:14:09
    cursor con la Part de esta variable no
  • 00:14:12
    termin variable pues ya no tiene la roba
  • 00:14:14
    no tipo cursor y lo que hago es que o
  • 00:14:19
    sea at del guardo la consulta que va a
  • 00:14:22
    tener el cursor o
  • 00:14:23
    sea seleccion dni de la tabla clientes
  • 00:14:26
    donde la longitud
  • 00:14:30
    contenido del campo contraseña sea menor
  • 00:14:33
    a cuat con el L medimos la longitud no
  • 00:14:38
    de de un campo de una tabla del
  • 00:14:42
    contenido del campo de una
  • 00:14:44
    tabla para que má entienda el cursor lo
  • 00:14:47
    que hace es como una flechita y por
  • 00:14:49
    cuando resuelven una a ver por ejemplo
  • 00:14:53
    AC utilizar esto es como cuando menos de
  • 00:14:56
    tirar est cito entero va a agarrar y va
  • 00:14:58
    a tener una flechita acá va parar en
  • 00:14:59
    esta línea toda esta línea después el
  • 00:15:02
    cursor se va a incrementar Ah no antes
  • 00:15:04
    lo va a guardar en esta variable y
  • 00:15:07
    después se va a incrementar y va a bajar
  • 00:15:09
    esta línea y este contenido la va a
  • 00:15:11
    bordar y guardar en esta variable y así
  • 00:15:13
    hasta llegar al final de todos los
  • 00:15:14
    campos de la tabla Entonces qué tien que
  • 00:15:17
    usar un bucle un bucle se acuerdan que
  • 00:15:19
    un bucle da vueltas en un mismo segmento
  • 00:15:22
    de código se va a repetir un segmento de
  • 00:15:24
    código hasta que ocurra una determinada
  • 00:15:27
    condición
  • 00:15:29
    Bueno entonces abro el
  • 00:15:32
    cursor la O sea agarro y digo Bueno la
  • 00:15:36
    primera línea del cursor la guardo
  • 00:15:38
    dentro de la variable que yo lamé ID
  • 00:15:42
    intero entonces viene agarra como el
  • 00:15:45
    cursor te va a devolver un dni que era
  • 00:15:47
    entero por eso est es entero y le decía
  • 00:15:50
    no hace falta depende lo que devuelva el
  • 00:15:53
    cursor entonces
  • 00:15:57
    entero la primera línea se posiciona acá
  • 00:15:59
    devuelve este centero y lo guarda dentro
  • 00:16:01
    de la variable ID y se pregunta a través
  • 00:16:05
    de esta cante del motor sabe si se llegó
  • 00:16:09
    si es igual a cero es que
  • 00:16:11
    eh cómo se
  • 00:16:14
    llama No no no se llegó al final de
  • 00:16:18
    todos los contenidos de la tabla el bim
  • 00:16:23
    inicia este bucle mientras no sea el
  • 00:16:25
    final o sea mientras haya
  • 00:16:27
    datos inicia el bucle y actualiza la
  • 00:16:32
    tabla clientes sete el
  • 00:16:35
    campo contraseña igual o sea el nuevo
  • 00:16:39
    Val que va a tener y nosotros queremos
  • 00:16:42
    tenemos un que nuestro campo son de
  • 00:16:45
    barchart y necesitamos que acepte una
  • 00:16:48
    fecha Entonces
  • 00:16:49
    conver el
  • 00:16:52
    barch conver la fecha en formato 121 las
  • 00:16:57
    fechas tienen un formato Este es el
  • 00:16:58
    formato estándar ese 2 el año mes día y
  • 00:17:04
    guardarlo como si fuera un barchart que
  • 00:17:06
    es el tipo de dato de nuestro campo en
  • 00:17:09
    la tabla porque acá es barch no es Data
  • 00:17:12
    Time entonces AC con esto convertimos la
  • 00:17:15
    fecha el Data Time en un barchat y
  • 00:17:18
    actualizar entonces la tabla cliente
  • 00:17:20
    sando en el campo contraseña la
  • 00:17:22
    conversión de la fecha en barchart
  • 00:17:27
    donde la
  • 00:17:29
    el dni sea igual al ID y que ID lo que
  • 00:17:34
    retornó el cursor en la primera línea o
  • 00:17:37
    sea la línea actual vendr no siempre la
  • 00:17:39
    primera después esta va ser la segunda
  • 00:17:41
    cuando se incremente lo que devolvió que
  • 00:17:44
    este caso entero ent se pregunta el dni
  • 00:17:47
    es igual a
  • 00:17:50
    la có Llama a lo que devolvió el
  • 00:17:55
    cursor hace la
  • 00:17:57
    conversación hacer lo mismo que habíamos
  • 00:18:00
    hecho antes ya esto no se vaar sinando
  • 00:18:02
    dentro bucle y vuelve para arriba así
  • 00:18:06
    hasta llegar hasta que esta condición se
  • 00:18:08
    cumpla más termina el bucle se cierra el
  • 00:18:12
    cursor se libera el cursor o sea se
  • 00:18:15
    libera este espacio memoria en el mot
  • 00:18:18
    base de datos y
  • 00:18:22
    listo un ejemplo se ejecutaría Sería
  • 00:18:25
    bueno traigo todos los dni longitud
  • 00:18:29
    Bueno antes esperen un segundito que
  • 00:18:31
    vamos ir a la tabla y vamos
  • 00:18:33
    a Modificar
  • 00:18:36
    el un campo para que tenga menos de tres
  • 00:18:41
    caracteres que son
  • 00:18:44
    men esa contraseña b2
  • 00:18:48
    y tiene
  • 00:18:50
    21
  • 00:18:51
    21
  • 00:18:57
    dos Ay
  • 00:19:01
    Dios
  • 00:19:03
    Opa est
  • 00:19:13
    mal esto sería incorrecto Pero bueno
  • 00:19:16
    para salir un poco el
  • 00:19:19
    apuro
  • 00:19:22
    ahora estamos acá entonces si yo ejecuto
  • 00:19:27
    de nuevo esto
  • 00:19:29
    tengo los siguiente
  • 00:19:30
    dato va se ejecuta el Select un solo
  • 00:19:35
    línea o sea para la primera línea que va
  • 00:19:37
    a devolver no llega a hacer esto sino
  • 00:19:39
    que viene y primero vamos hacer mostr
  • 00:19:44
    campo de
  • 00:19:47
    donde de los campos
  • 00:19:53
    Ay voy a mostrar ahora cómo es que vamos
  • 00:19:56
    autar Esto entonces
  • 00:19:59
    Esta es la tabla que nosotros tenemos no
  • 00:20:02
    Quiénes son los que tienen menos de
  • 00:20:03
    cuatro caracteres H la 1 2 3 y 02 3 3
  • 00:20:08
    566 Entonces si ejecutamos el quién
  • 00:20:12
    tiene que volver este y este son que
  • 00:20:15
    estos dos
  • 00:20:17
    no
  • 00:20:19
    Entonces si estamos correcto se devolv
  • 00:20:22
    los dos que esperamos porque tien menos
  • 00:20:24
    de cu caracteres en su
  • 00:20:27
    contraseña entonces agarra como el fch
  • 00:20:32
    se posiciona en la primera línea de est
  • 00:20:34
    de lo que devolvió el cursor lo que está
  • 00:20:35
    guardado el cursor se posiciona acá y lo
  • 00:20:38
    guarda en esta variable ID porque
  • 00:20:40
    acuerden que era entero porque esto que
  • 00:20:43
    de retorno es entero sio sería
  • 00:20:45
    caracteres acá No si esto fuera
  • 00:20:47
    caracteres una fecha sio fuera una fecha
  • 00:20:51
    Entonces se guardó en esta variable
  • 00:20:54
    temporal este
  • 00:20:56
    contenido o sea por lo tanto si siemp
  • 00:20:58
    tien que una variable para guardar el
  • 00:21:00
    contenido porque no pueden guardarla en
  • 00:21:01
    esta tengan en cuenta eso bueno inici
  • 00:21:06
    es O sea ya no hay más datos en la tabla
  • 00:21:08
    no después entonces inicia actualizame
  • 00:21:12
    el
  • 00:21:13
    campo en la tabla clientes el campo
  • 00:21:16
    contraseña bueno por la fecha
  • 00:21:20
    donde
  • 00:21:21
    esto lo que está contenido est esto sea
  • 00:21:25
    igual a
  • 00:21:26
    la va venir
  • 00:21:29
    tiene este número El 55 viene va acá se
  • 00:21:33
    posiciona
  • 00:21:35
    acá toma la fecha
  • 00:21:38
    actual config el motor de base de datos
  • 00:21:41
    la convierte en un barch y la guarda acá
  • 00:21:43
    ahora esto quedó guardado quedó esa
  • 00:21:46
    fecha entonces viene guarda otra vez la
  • 00:21:49
    segunda línea de esta
  • 00:21:52
    consulta viene acá se para acá guarda
  • 00:21:55
    este esto este contenido guarda dentro
  • 00:21:59
    de la variable de tipo entero ID y
  • 00:22:04
    eh la guarda tipo entero y vuelve para
  • 00:22:06
    arriba Entonces dice bueno buscame
  • 00:22:10
    actualizame el campo dónde y de es adni
  • 00:22:15
    Entonces es el
  • 00:22:22
    6689 viene acá se 6689 viene acá
  • 00:22:27
    modifica esto por la fecha y vuelve a
  • 00:22:31
    intentar guardar Alor ahora ya es el
  • 00:22:36
    final del archivo Sí no hay nada de
  • 00:22:38
    archivo no hay más nada en la tabla Sí
  • 00:22:40
    bueno cerras
  • 00:22:43
    termina cierra el cursor y libera el
  • 00:22:46
    espacio de memoria si nosotros
  • 00:22:48
    ejecutamos esto y ahora hacemos
  • 00:22:52
    esto exactamente como se lo describ tomó
  • 00:22:55
    toda la fecha actual la hora todo
  • 00:22:59
    porque buen 45 justo Me cambi
  • 00:23:02
    y se guardó así el contenido estos
  • 00:23:07
    procedimientos almacenados y
  • 00:23:11
    cursores el contenido dentro del cursor
  • 00:23:13
    y el contenido de los procedimientos
  • 00:23:16
    almacenados es variable Lo que ustedes
  • 00:23:18
    quieran se acerta parámetro Y eso
  • 00:23:20
    también
  • 00:23:21
    y lo mismo contenido de los cursores que
  • 00:23:24
    no deja un procedimiento almacenado pero
  • 00:23:27
    en cuenta que tiene que esta lógica no
  • 00:23:30
    siempre
  • 00:23:31
    esto esto esto y esto va a estar esto es
  • 00:23:37
    opcional y esto
  • 00:23:39
    también esto es lo que ustedes pero el
  • 00:23:42
    resto de la estructura es siempre la
  • 00:23:43
    misma lógica bueno Y ahora cómo se llama
  • 00:23:48
    algo también les quería decir que en los
  • 00:23:51
    cursores no es que solo puedes guardar
  • 00:23:54
    nada más un dato si acá usted por
  • 00:23:56
    ejemplo consultado también sean
  • 00:23:58
    guardados apellido y nombre no sé por
  • 00:23:59
    qué pero hicieran guardar para evaluar
  • 00:24:02
    algo y pusieran como campo apellido y
  • 00:24:04
    nombre tendrían que poner acá otra
  • 00:24:05
    variable del tipo apellido y nombre tipo
  • 00:24:09
    bar charar y después cuando hacan el fch
  • 00:24:12
    tendrían que volver poner acá también
  • 00:24:14
    Que guarde en o sea coma y apellido y
  • 00:24:18
    nombre y acá también no coma apellido y
  • 00:24:20
    nombre y de esa forma funciona ahora por
  • 00:24:23
    último les quería Mostrar un temita
  • 00:24:25
    quedado arriba pero esto más que nada
  • 00:24:28
    que se confundan sería como sería un
  • 00:24:30
    bucle para repetir algo cortito usando
  • 00:24:34
    una variable que nosotros creamos para
  • 00:24:35
    una consulta ve que esto no está dentro
  • 00:24:37
    procento es una consulta má o sea
  • 00:24:41
    tranquilamente las consultas que esty
  • 00:24:42
    haciendo al principio pueden usar
  • 00:24:43
    variables y acá lo declar variable tipo
  • 00:24:46
    entero que va a ser un contador la ceteo
  • 00:24:49
    en cero hago un bucle o sea mientras la
  • 00:24:53
    variable I sea menor a
  • 00:24:57
    5 imprimir Hola mundo y ponerle el nuevo
  • 00:25:01
    valor o sea se tear ahora a la variable
  • 00:25:03
    I y + 1 es decir si ahora vale 0 ahora
  • 00:25:07
    empiez a valer un y vuelvo acá 1 5
  • 00:25:10
    imprimí esto a vale 2 2 men 5 ahora esto
  • 00:25:14
    3 es -5 imprimí esto se ti nuevo valor 4
  • 00:25:17
    4 - 5 imprimí esto se ti nuevo valor que
  • 00:25:20
    pasa a ser 4 + 1 5 y ahora ent While y
  • 00:25:24
    dice 5 es -5 No no ya está ent terminas
  • 00:25:28
    este y terminas imprimiendo una dos 3 cu
  • 00:25:32
    cco veces el mundo pu empezó de cero si
  • 00:25:35
    acá Pon una ent son cuatro recuerda Y
  • 00:25:38
    esto no solamente se Prim mundo sino no
  • 00:25:40
    sé podría ser que repito una consulta
  • 00:25:43
    con Tops y que se vaya incrementando
  • 00:25:46
    menos de un top y ponés el valor de la
  • 00:25:49
    variable entonces en la primera vuelta
  • 00:25:51
    te muestra un registro en la segunda
  • 00:25:52
    vuelta te muestra dos en la tercera te
  • 00:25:54
    muestra tres y no sé y tiene una
  • 00:25:57
    variable más y van cambiando y que
  • 00:25:59
    muestre los pares de del no
  • 00:26:02
  • 00:26:03
    de de de una tabla por ejemplo vos
  • 00:26:07
    querés que vaya mostrando Tenés una ID
  • 00:26:09
    que son van del cero para en adelante y
  • 00:26:13
    queres que muestre
  • 00:26:16
    los o sea da 10 que muestre uno no te
  • 00:26:19
    pondrías top uno y con la variable esa
  • 00:26:22
    que se va a incrementar de y y otra
  • 00:26:24
    variable que eh se incremente da 10
  • 00:26:29
    entonces pones top un y cuando ponías el
  • 00:26:34
    we pones que la s idea sea igual a la a
  • 00:26:39
    la nuevo valor de variable que esa que
  • 00:26:41
    se auto incrementa pero Tom
  • 00:26:44
    novedad así que bueno ahora un temita
  • 00:26:47
    más de los condicionales supongamos
  • 00:26:49
    nuestra tabla clientes Ah tiene un nuevo
  • 00:26:50
    campo que es el uno de contraseñas Y
  • 00:26:53
    tenemos contraseñas como 1 2 3 como
  • 00:26:55
    contraseñas nulas y eh
  • 00:27:01
    nos n do TR y que no tengamos nada pero
  • 00:27:04
    en este caso tenemos n Nosotros queremos
  • 00:27:07
    hacer una consulta que te muestre si es
  • 00:27:08
    1 2 3 o nulo qu error
  • 00:27:13
    entonces qu haríamos
  • 00:27:17
    seleccion el campo nombre y
  • 00:27:21
    cas sea el caso donde el campo
  • 00:27:26
    contraseña es nulo por ejemplo este
  • 00:27:30
    entonces Mostrar error en el caso de que
  • 00:27:35
    de contraseña sea 1 2 3 mostra error en
  • 00:27:39
    el caso cont se nulo
  • 00:27:42
    nada mostra error de lo contrario si no
  • 00:27:45
    se cumple ninguno de estos casos Pon la
  • 00:27:47
    contraseña que está terminar Case
  • 00:27:51
    mostrarlo con el Ale o sea como
  • 00:27:55
    psd y el dni de la tabla
  • 00:27:59
    centes
  • 00:28:01
    siamos como ven apareció error acá y
  • 00:28:03
    error acá que son Trust Cher y d
  • 00:28:07
    Gastón y Gastón tenía 1 do 3 y tenía
  • 00:28:12
    nul bueno
  • 00:28:16
    eh esta consulta que acabo de hacer es
  • 00:28:18
    un elemento más de la visualización de
  • 00:28:20
    registro después de acá pueden ir joins
  • 00:28:22
    pu order bu acá lo dice corto pero esto
  • 00:28:25
    es un elemento más de la consulta que va
  • 00:28:28
    antes de los otros componentes no y qué
  • 00:28:32
    les quería decir agregar Ah este es un
  • 00:28:35
    Case acá podría hasta acá es un Case no
  • 00:28:38
    y yo tranquilamente podría haber
  • 00:28:40
    puesto acá coma y otro Case Es que solo
  • 00:28:45
    un case por consulta por ha puesto coma
  • 00:28:46
    y otro Case que obedezca a otra columna
  • 00:28:49
    no sé Fijate los casos que la dirección
  • 00:28:51
    sea números que está
  • 00:28:53
    mal direcciones incorrectas
  • 00:28:56
    entienden bueno Dios no hay más nada que
  • 00:29:01
    explicar ya no no tengo más nada por
  • 00:29:07
    hoy Espero que le sirva y bueno nos vos
Tags
  • SQL
  • procedimientos almacenados
  • cursores
  • bases de datos
  • optimización
  • parametrización
  • fragmentación de código
  • manejadores de errores
  • transacciones
  • stored procedures