excelente tutorial llego al 100 en explicacion. solo falto poner el tercer ejemplo cuando usas insert con trigger. ( create trigger t_nametable on cabmov for insert as declare @var1,...)
De ninguna parte, me vino a la mente y lo sugerí, ya que seria lo primero que yo intentaría, también lo estudiaría usando CLR, que es una programación empaquetada en DLL que luego incorporaría a un procedimiento. Seria que explicaras que quieres hacer para evaluar cual es el mejor camino.
Una pregunta por favor, utilizas el Update solo para actualizar la misma tabla cuando declaras el cursor?, y si es otra tabla que no es el cursor? mi inquietud. Tengo una tabla que contiene el código del proveedor, nombre de promoción, fecha inicial y fecha final, y un porcentaje entero que le debo cobrar. mi idea es recorrer la tabla de promociones, y actualizar 3 campos de una tabla de ventas por proveedor por fechas, si están dentro de ese rango de promoción, actualizo el porcentaje y nombre de la promoción. tienes algún video que explique leer una tabla y actualizar otra tabla? saludos. gracias si me puedes responder
Si se puede devolver parametros en un procedimiento, pero no en cada iteración. Lo que se podria hacer es devolver una variable tipo tabla formada por los valores de cada iteración.
una pregunta, he visto que muchos no recomiendan la utilización de cursores y tablas temporales, cual tu opinión. Yo debo de manejar mucho esto por que manejo ETL
Usualmente no se recomiendan los cursores contradicen el modelo relacional, que opera en conjuntos con algebra relacional, por lo que normalmente requieren más código que el enfoque basado en conjuntos. También incurren en más sobrecarga durante su ejecución. Alternativas a los cursores: -Funciones de ventanas -Las funciones de agregado -Variables tipo tabla Cuando usar cursores de manera apropiada: La generación de código SQL dinámico La realización de tareas administrativas
Gracias por tu explicación , una de las mejores que he visto, pero necesito de tu ayuda por favor. si me das un correo donde escribirte o explicártelo por aquí sobre un script que necesito para leer una tabla y grabar unos campos en otra, y no se si esto del cursor me sirva te lo sabría agradecer.
Si hay un campo en común que te permita hacer el join entre las dos tablas temporales si se podría, si no tendrías que hacer dos cursores, uno para cada tabla.
Gracias por responder, pero podría escribirte al interno, tengo una duda con un procemiento almacenado donde uso cursores, y te quería pedir que me orientes.
Mil disculpas, pero es muy difícil para mí, por cuestiones de trabajo, comprometerme a analizar tu caso específico y responderte, pero suscríbete a facebook.com/groups/SQLSERVERLATAM/ donde puedes recibir apoyo de varios compañeros en la comunidad.
Buenas! tengo dos dudas. La primera, para realizar update de los campos de una tabla diferente a la del cursor, tendria que ingresar los campos en el update (tabla y campos correspondientes asociados a cada variable del cursor?) la segunda: si quisiera validar la existencia de un campo del cursor en otra tabla, como podria hacerlo. De antemano muchas gracias!
muchas gracias le comento el porq de la pregunta... tengo un proceso creado que funciona trayéndome la base de datos de la empresa a mi maquina, pero en la de ellos propia, no... no me da error pero no me registra ningún campo, al final dice 0 cuando debería registrar en todos los campos asignados. el SQL utilizado es el 2016. Se me olvidaba... en la empresa de ellos entro al sql con un usuario que ellos me asignaron pero en mi maquina entro con el sa!
Según entiendo el proceso funciona en la máquina de la empresa, pero en tu máquina no? Otras preguntas serían Como te estas conectando a la base de datos desde el excel o usas el SQL Management Studio? Tienes acceso al script del proceso o solo lo ejecutas? Haz intentado en vez de sesionar como SA en tu máquina iniciar sesión con el usuario que te dan en la empresa o no se puede?
al revés profesor, en mi maquina si funciona el proceso utilizando la misma base de datos que me traigo de dicha empresa... pero en el sql de ellos no, no me hace los registros. le comento... en mi maquina entro como sa con todo los permisos pero en la empresa de ellos entro con un usuario que me asignaron con nombre NVD y la verdad no veo la diferencia es el mismo sql es la misma base de datos pero el proceso en mi maquina hace los registros pero en la de ellos no, todo finaliza en 0!
profesor podria comunicarme con ud por otra via... tengo algunas dudas y quisiera registrarme en undemy para lo del curso y para asesoramiento. De ante mano muchísimas gracias por el tiempo que dedica en la enseñanza de toso los que lo seguimos!
Hola que tal, queria una ayuda queria ver como mostrar las ventas de cada empleado en dias, meses y años ¿? Porfa es una tarea pero no tengo idea de como hacerlo. Please ayudame con eso
Buenas, me gustó El video, y me preguntaba, como puedo hacer para leer todas las bases de datos que hay, y luego leer la información que hay en una tabla en especial y común en cada base de datos. Como un bucle for.. espero haber explicado el problema bien. Gracias de antemano.
Con el siguiente script recorres todas las bases de datos pero para hacer un backup de cada base, tendrías que modificarlo para consultar en cada base la tabla que necesitas DECLARE @nombre_db AS VARCHAR(50) DECLARE tablas_cursor CURSOR FOR SELECT name FROM sys.databases WHERE name NOT IN( 'master', 'tempdb', 'model', 'msdb' ) OPEN tablas_cursor FETCH next FROM tablas_cursor INTO @nombre_db WHILE @@fetch_status = 0 BEGIN DECLARE @nombre VARCHAR(150) SET @nombre= CONVERT(VARCHAR(9), Getdate(), 6) SET @nombre='c:\Backup\' + @nombre + '-' + @nombre_db + '.bak' SET @nombre=Replace(@nombre, ' ', '') --select @nombre BACKUP DATABASE @nombre_db TO DISK=@nombre WITH compression FETCH next FROM tablas_cursor INTO @nombre_db END CLOSE tablas_cursor DEALLOCATE tablas_cursor
Ojo que no es que no lo pueda devolver, de echo lo hace. Creo que no nos estamos entendiendo, tu pregunta inicial fue que el procedimiento devolviera, en cada iteración de un ciclo al que entra para leer el cursor, un valor (o al menos así te entendí) y esto es lo que digo que no se puede porque el parámetro de salida debe ser uno. Creo que lo que quieres hacer es mas fácil, usando una función, además tendría que preguntar si tu cliente es VStudio, discutámoslo escríbeme a vhcardenas@gmail.com
Supongo que estas usando la variable para recibir un valor y la variable no esta declarada al inicio de la instrucción, esto lo haces con un DECLARE @idpasajero INT por ejemplo, Saludos!
Pues básicamente encierras tu sentencia de cursor en dentro de un CREATE PROCEDURE, algo como esto CREATE PROCEDURE as --Declarando el cursor Declare Cursor1 Cursor scroll for select * from --Abrir el cursor Open Cursor1 --Navegar Fetch first from Cursor1 --cerrar el cursor Close Cursor1 --liberar de memoria Deallocate Cursor1 go
Es la mejor explicación que he visto, aplausos
Excelente, no solo explicas como se hace sino que también explicas como funciona de forma muy clara. Muchas gracias!
Es una explicación muy buena para cuando se viene viendo los cursores
Hace tres años aprendì viendo este video y hoy averiguando otros temas por cosa del destino me vuelvo a cruzar con el video que aprendì.
Ya pasaron 3 años mas rey
tus 16:44 minutos me a explicado todo un tema, que a mi profesora le a llevado dos horas y nadie se a enterado de lo que explicaba.
Muchísimas gracias, excelente exposición no tenía idea que se podía hacer eso en SQL Server, me soluciona una infinidad de problemas, felicitaciones
Los mejores cursos de SQL Server que e visto en UA-cam, Gracias...
Muchas gracias, logre entender y aplicar en mi solución
¡Excelente!
Concreta pero entendible explicación sobre Cursores. Muchas gracias.
Excelente explicación , gracias por su tiempo
Claro, conciso, simple, ameno....¡¡Muuuuchísimas gracias!!
Excelente muy didáctico, muchas gracias
Excelente explicación maestro! Dios bendiga tu vida!
Mil Gracias! Saludos!
Muy buena forma de explicar, gracias.
Muchísimas gracias por la explicación tan clara sobre los cursores
Oye muchas gracias por esta excelente explicación... me has ayudado enormemente... saludos y gracias
Mejor explicado imposible. Gracias!
Muchisimas gracias por el tutorial!
visoalgt que bien explicas men, yo lo estoy viendo en la U, y me ha costado comprender la verdad. Demasiadas gracias, saludos desde CRC!
Que bueno que te sea de utilidad el video Anthony, Saludos!
Excelente video!!! gracias!!
Excelente explicación , paso a paso.
Gracias por su tiempo, me ha sido muy util!!
Felicitaciones , Explicas muy bien :D. Un muy buen aporte
gracias tus guias son excelentes....
02/08/18 me sirvió para entenderlo, muchas gracias
Muchas gracias. Muy bien explicado
excelente video !! gracias
Gracias Por Tu Aporte, Fácil d Entender.
Si, tienes toda la razón, funcionan de similar manera
Excelente, y yo que creía que saber todo acerca de este tema.
Dios lo bendiga, loviu
Bien explicado y entendible
Excelente aporte
Muy bueno el tutorial, muchas gracias
Excelente explicación, gracias por compartir.
Gracias Muy Bien Explicado!!!
Gracias por la explicación :)
Excelente tutorial!!!
Tan difícil es explicarlo así de fácil? Muchas gracias por su tiempo.
Muy buena la explicación!! muchas gracias.
gracias excelente explicación
Excelente Video!
excelente tutorial llego al 100 en explicacion. solo falto poner el tercer ejemplo cuando usas insert con trigger. (
create trigger t_nametable
on cabmov
for insert
as
declare @var1,...)
Gracias excelentes tus tutoriales!
muchas gracias por la explicación, me ayudaste mucho :D
Buena explicacion
De ninguna parte, me vino a la mente y lo sugerí, ya que seria lo primero que yo intentaría, también lo estudiaría usando CLR, que es una programación empaquetada en DLL que luego incorporaría a un procedimiento. Seria que explicaras que quieres hacer para evaluar cual es el mejor camino.
Magistral muchas gracias!!
excelente muy bien explicado
Excelente, muy buen video!
Me gusto la explicación, una consulta para que usas el comando
where current of
en 16 minutos me aclaro todo acerca de los cursores, tengo un problemática con MYSQL con esto de los cursores
gracias gracias.
like en 50 segundos, muchas gracias
Agradecido...
gracias capo
excelente
Muchas gracias profe
excelente video
Esto seria algo analogo a declar un iterador sobre una estructura de datos en java por ej no?
GRACIAAAAAAAAAAAAAAAAAAAAAAAAAAAASSSSSSSSSSSSS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Una pregunta por favor, utilizas el Update solo para actualizar la misma tabla cuando declaras el cursor?, y si es otra tabla que no es el cursor? mi inquietud.
Tengo una tabla que contiene el código del proveedor, nombre de promoción, fecha inicial y fecha final, y un porcentaje entero que le debo cobrar.
mi idea es recorrer la tabla de promociones, y actualizar 3 campos de una tabla de ventas por proveedor por fechas, si están dentro de ese rango de promoción, actualizo el porcentaje y nombre de la promoción.
tienes algún video que explique leer una tabla y actualizar otra tabla?
saludos.
gracias si me puedes responder
consulta, Que
pasos seguirías para cargar data entre servidores desde una tabla temporal
Seria igual que una tabla local solo hay que establecer la conexión al segundo servidor por medio de OPENROWSET o Servidores vinculados
@@vhcardenas mi pregunta referia de integration services
Wow, muy bien explicado
Si se puede devolver parametros en un procedimiento, pero no en cada iteración. Lo que se podria hacer es devolver una variable tipo tabla formada por los valores de cada iteración.
Muy buena explicación, tendrías algunos vídeos de triggers, si es posible.Muchas gracias.
En este link paulo villamayor, encontraras un video de triggers ua-cam.com/video/2FiUK8NWuXs/v-deo.html
Muchisimas gracias
Éxitos por siempre
Excelente! muchas gracias!
en SQL Server existe una instruccion que se llama DATEPART que extrae de la fecha la parte que necesitas.
Excelente video :)
gracias
una pregunta, he visto que muchos no recomiendan la utilización de cursores y tablas temporales, cual tu opinión. Yo debo de manejar mucho esto por que manejo ETL
Usualmente no se recomiendan los cursores contradicen el modelo relacional, que opera en conjuntos con algebra relacional, por lo que normalmente requieren más código que el enfoque basado en conjuntos.
También incurren en más sobrecarga durante su ejecución.
Alternativas a los cursores:
-Funciones de ventanas
-Las funciones de agregado
-Variables tipo tabla
Cuando usar cursores de manera apropiada:
La generación de código SQL dinámico
La realización de tareas administrativas
@@visoalgt Gracias por responder :)
Hey amigo muchas gracias . :)
y si antes de el update quiero hacer un IF ?
Gracias por tu explicación , una de las mejores que he visto, pero necesito de tu ayuda por favor. si me das un correo donde escribirte o explicártelo por aquí sobre un script que necesito para leer una tabla y grabar unos campos en otra, y no se si esto del cursor me sirva te lo sabría agradecer.
Muchas gracias Victor tu explicaciòn es muy clara. Piensas sacar curso de Power Bi en Udemy???
puedes usar el mismo cursor para recorrer dos tablas ?
Tu cursor se carga a partir de un Select, si este tiene un join entre tablas teniendo claro la tabla padre y la tabla hija, si recorrerías dos tablas.
Son dos tablas temporales
Si hay un campo en común que te permita hacer el join entre las dos tablas temporales si se podría, si no tendrías que hacer dos cursores, uno para cada tabla.
Gracias por responder, pero podría escribirte al interno, tengo una duda con un procemiento almacenado donde uso cursores, y te quería pedir que me orientes.
Mil disculpas, pero es muy difícil para mí, por cuestiones de trabajo, comprometerme a analizar tu caso específico y responderte, pero suscríbete a facebook.com/groups/SQLSERVERLATAM/ donde puedes recibir apoyo de varios compañeros en la comunidad.
10:20 me da problema cuando lo ejecuto
AYUDA!!
Buenas! tengo dos dudas. La primera, para realizar update de los campos de una tabla diferente a la del cursor, tendria que ingresar los campos en el update (tabla y campos correspondientes asociados a cada variable del cursor?) la segunda: si quisiera validar la existencia de un campo del cursor en otra tabla, como podria hacerlo. De antemano muchas gracias!
En este link puedes ver más detalles sobre lo que preguntas soportesql.wordpress.com/2012/11/23/cursores-en-sql-server/
Buenas tardes profesor una pregunta, influye que este cursor funcione dependiendo si el usuario es SA o no?
No, no debe influir, tu cursor se puede crear de manera local o global para que funcione solo en tu sesión o en todas las sesiones de SQL
muchas gracias le comento el porq de la pregunta... tengo un proceso creado que funciona trayéndome la base de datos de la empresa a mi maquina, pero en la de ellos propia, no... no me da error pero no me registra ningún campo, al final dice 0 cuando debería registrar en todos los campos asignados. el SQL utilizado es el 2016. Se me olvidaba... en la empresa de ellos entro al sql con un usuario que ellos me asignaron pero en mi maquina entro con el sa!
Según entiendo el proceso funciona en la máquina de la empresa, pero en tu máquina no? Otras preguntas serían Como te estas conectando a la base de datos desde el excel o usas el SQL Management Studio? Tienes acceso al script del proceso o solo lo ejecutas? Haz intentado en vez de sesionar como SA en tu máquina iniciar sesión con el usuario que te dan en la empresa o no se puede?
al revés profesor, en mi maquina si funciona el proceso utilizando la misma base de datos que me traigo de dicha empresa... pero en el sql de ellos no, no me hace los registros. le comento... en mi maquina entro como sa con todo los permisos pero en la empresa de ellos entro con un usuario que me asignaron con nombre NVD y la verdad no veo la diferencia es el mismo sql es la misma base de datos pero el proceso en mi maquina hace los registros pero en la de ellos no, todo finaliza en 0!
profesor podria comunicarme con ud por otra via... tengo algunas dudas y quisiera registrarme en undemy para lo del curso y para asesoramiento. De ante mano muchísimas gracias por el tiempo que dedica en la enseñanza de toso los que lo seguimos!
SALUDOS JEAN JOAN BRUNO FRANK ABEL
amigo tienes el scrcipt de la base northwind
www.microsoft.com/en-us/download/details.aspx?id=23654
En un cursor, ¿es posible mostrar de 10 en 10 filas??
Personalizando tu While, podrías poner lineas intermedias
Clarísimo.
Hola que tal, queria una ayuda queria ver como mostrar las ventas de cada empleado en dias, meses y años ¿? Porfa es una tarea pero no tengo idea de como hacerlo. Please ayudame con eso
Buenas, me gustó El video, y me preguntaba, como puedo hacer para leer todas las bases de datos que hay, y luego leer la información que hay en una tabla en especial y común en cada base de datos. Como un bucle for.. espero haber explicado el problema bien. Gracias de antemano.
Con el siguiente script recorres todas las bases de datos pero para hacer un backup de cada base, tendrías que modificarlo para consultar en cada base la tabla que necesitas
DECLARE @nombre_db AS VARCHAR(50)
DECLARE tablas_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE name NOT IN( 'master', 'tempdb', 'model', 'msdb' )
OPEN tablas_cursor
FETCH next FROM tablas_cursor INTO @nombre_db
WHILE @@fetch_status = 0
BEGIN
DECLARE @nombre VARCHAR(150)
SET @nombre= CONVERT(VARCHAR(9), Getdate(), 6)
SET @nombre='c:\Backup\' + @nombre + '-'
+ @nombre_db + '.bak'
SET @nombre=Replace(@nombre, ' ', '')
--select @nombre
BACKUP DATABASE @nombre_db TO DISK=@nombre WITH compression
FETCH next FROM tablas_cursor INTO @nombre_db
END
CLOSE tablas_cursor
DEALLOCATE tablas_cursor
Ojo que no es que no lo pueda devolver, de echo lo hace. Creo que no nos estamos entendiendo, tu pregunta inicial fue que el procedimiento devolviera, en cada iteración de un ciclo al que entra para leer el cursor, un valor (o al menos así te entendí) y esto es lo que digo que no se puede porque el parámetro de salida debe ser uno. Creo que lo que quieres hacer es mas fácil, usando una función, además tendría que preguntar si tu cliente es VStudio, discutámoslo escríbeme a vhcardenas@gmail.com
Ahora como puedo regresarlo a la normalidad?
Me parece buena la explicacion ,pero quisiera saber,que muestras ,osea que datos :c
HOLA ME SALE ESTE ERROR
MANEJOR EL 2012
Debe declarar la variable escalar "@idpasajero".
Supongo que estas usando la variable para recibir un valor y la variable no esta declarada al inicio de la instrucción, esto lo haces con un DECLARE @idpasajero INT por ejemplo, Saludos!
hola, EXACTO ESO LO TENGO AL COMIENZO, PERO IGUAL ME MARCA ERROR PODRIAS APOYARME POR FAVOR .
Pon tu código para ver de que se trata.
Gracias, el problemas es kue tengo kue seleccionar desde el inicio hasta el fin del código.
Excelente que ya lo pudiste resolver. Saludos!
man como se mete este cursor en un procedimiento almacenado si es con parametros
Pues básicamente encierras tu sentencia de cursor en dentro de un CREATE PROCEDURE, algo como esto
CREATE PROCEDURE
as
--Declarando el cursor
Declare Cursor1 Cursor scroll
for select * from
--Abrir el cursor
Open Cursor1
--Navegar
Fetch first from Cursor1
--cerrar el cursor
Close Cursor1
--liberar de memoria
Deallocate Cursor1
go
muy util visto 5 años despues ejejejeje
Excelente que siga siendo de utilidad, Saludos!
soy un tonto jamas aprendere a programar tal vez mañana ya no exista...
Entonces no lo vea
Muy bien explicado muchas gracias
Muchas gracias todo está muy claro.
Excelente hermano, gracias.