Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/07/2009, 09:35
Avatar de pyroCL
pyroCL
 
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años, 10 meses
Puntos: 2
Procedimiento almacenado de insercion (con cursores)

Hola gente del foro...

Tengo una duda de como crear un procedimiento almacenado en sql server, que inserte datos en una tabla (datos que se le dan por parámetro) y otro dato que se extrae de un cursor.

Explico lo que quiero que haga.

1° Crear el procedimiento
2° Declaro los datos que se recibirán
3° creo el cursor, seleccionando todos los registros que cumplen con una condicion dada
4° comienzo el procedimiento (begin)
5° por cada uno de los registros que están en el cursor inserto en una tabla los datos resibidos por parámetro y el dato que extraigo del cursor.
6° fin del procedimiento-

Pongo el código de como lo haría, lo malo es que no se como hacer ese codigo para sql server, ya que por ejemplo el cursor no se puede recorrer con un for...

Código:
CREATE PROCEDURE insertarPorCargo
	@CODIGO_CAP VARCHAR(20)
	@CODIGO_CARGO VARCHAR(20)
	@FECHA DATETIME
	@TEMA VARCHAR(40)
	@DURACION VARCHAR(10)
	@LUGAR VARCHAR(30)
	@CODDEPTO VARCHAR(20)
	@HORA_INICIO VARCHAR(10)
	@HORA_FIN VARCHAR(10)
	@TIPO VARCHAR(10)
	@RUT_RELATOR VARCHAR(15)

	CURSOR C1 IS
		SELECT RUT
		FROM EMPLEADO 
		WHERE CODIGO_CARGO = @CODIGO_CARGO
		ORDER BY RUT;
AS
BEGIN

	
	FOR REGISTRO IN C1 LOOP
		INSERT INTO CAPACITACION VALUES(@CODIGO_CAP, @FECHA, @TEMA, @DURACION, @LUGAR, @CODDEPTO, @HORA_INICIO, @HORA_FIN, @TIPO, @CODIGO_CARGO, @RUT_RELATOR, REGISTRO.RUT)
	END LOOP
	SET NOCOUNT ON;

   
END
Gracias gente del foro! Espero que alguien me pueda ayudar....

Última edición por pyroCL; 06/07/2009 a las 09:49