deshabilitá los constraints 
  ----- Original Message ----- 
  From: Leandro Halfon 
  To: [email protected] 
  Sent: Monday, January 28, 2008 3:28 PM
  Subject: [puntonet] [OT] SQL cursores anidados.


  Lista.. a ver si algun grosso en sql me puede ayudar
  tengo que duplicar totalmente los datos de un bd..
  pero como algunas tablas estan relacionados..tengo que usar cursores...

  hice un script para duplicar los datos de 2 tablas..

  el scripts es el siguiente:

  /*declaramos las variables para tabla menu*/
  declare @idmenu as int
  declare @tipomenu as int
  declare @nombre as varchar(50)
  declare @descripcion as varchar(300)
  declare @orden as int
  declare @idmenupadre as int
  declare @publicado as bit
  declare @imagen as varchar(80)
  declare @alineacion as int
  /*declaramos las variables para tabla menu_idiomas */
  declare @texto as varchar(150)
  declare @eslinkexterno as bit
  declare @urlexterno as varchar(250)
  declare @estargetself as bit
  declare @estargetblank as bit
  declare @espopup as bit
  declare @width as int
  declare @heigth as int

  /*declaramos los cursores. El select debe contener sólo los campos a 
utilizar.*/
  declare MENU cursor for
  select IdMenu,TipoMenu, 
Nombre,Descripcion,OrdenMenu,IdMenuPadre,Publicado,Imagen,Alineacion 
  from ocms_menues where idsitio=5 and tipomenu=3

  open MENU
  /*Avanzamos un registro y cargamos en las variables los valores encontrados 
en el primer registro*/
  fetch next from MENU into 
@idmenu,@tipomenu,@nombre,@descripcion,@orden,@idmenupadre,@publicado,@imagen,@alineacion
      while @@fetch_status = 0
          begin
              /*Insertamos el nuevo menu*/
              insert into ocms_menues 
values(@tipomenu,@nombre,@descripcion,@orden,@idmenupadre,@publicado,14,@imagen,@alineacion)
              necesito el id que inserte para el insert que hay mas abajo...
              /*Leemos el menu_idioma*/
              declare MENU_IDIOMAS cursor for            
              select 
texto,eslinkexterno,publicado,urlexterno,estargetself,estargetblank,espopup,popupwidth,popupheigth
              from ocms_menues_idiomas where [EMAIL PROTECTED]
              open MENU_IDIOMAS
              fetch next from MENU_IDIOMAS into 
@texto,@eslinkexterno,@publicado,@urlexterno,@estargetself,@estargetblank,@espopup,@width,@heigth
              while @@fetch_status = 0
              begin
                  /*Insertamos el nuevo menu_idioma*/
                  insert into ocms_menues_idiomas 
values(@texto,@eslinkexterno,@publicado,@urlexterno,@estargetself,@estargetblank,@espopup,@width,@heigth)
                  /*Avanzamos otro registro de la tabla menu_idioma*/           
 
                  fetch next from MENU_IDIOMAS into 
@tipomenu,@nombre,@descripcion,@orden,@idmenupadre,@publicado,@imagen,@alineacion
              end
              close MENU_IDIOMAS
              deallocate MENU_IDIOMAS


              /*Avanzamos otro registro de la tabla menu */            
              fetch next from MENU into 
@tipomenu,@nombre,@descripcion,@orden,@idmenupadre,@publicado,@imagen,@alineacion
          end
      /*cerramos el cursor*/
  close MENU
  deallocate MENU

  ahora bien.. en el cursor de MENU_IDIOMAS necesito insertar en valor que hice 
en insert del nuevo menu.. tienen idea de como hago ?

  gracias!!!

  Leandro

Responder a