Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

Insert into

Participa en el tema Insert into en el foro Programación.
Buenos días. Tengo una tabla llamada Codigos que maneja información mensual. El campo que me ...

Buscar en este tema:
 
  •  
    #1 Insert into
    Buenos días.
    Tengo una tabla llamada Codigos que maneja información mensual. El campo que me permite saber a qué mes pertenecen los códigos es cPeri.
    Tengo un procedimiento que debe copiar la información de la tabla Codigos de un mes determinado a otro nuevo. Hoy en día lo hago de la siguiente manera:

    declare @wPeri as varchar(07)
    declare @wNumero as int
    declare @wNombre as varchar(150)
    declare @wFormula as smallint

    set @wPeri='2009-10'

    declare CRCodigos cursor for select
    cNumero,
    cNombre,
    cFormula from Codigos where cPeri='2009-09'

    open CRCodigos

    while 01=01
    begin
    fetch next from CRCodigos into
    @wNumero,
    @wNombre,
    @wFormula

    if @@fetch_status=00
    begin
    insert into Codigos (cPeri, cNumero, cNombre, cFormula)
    values(@wPeri, @wNumero, @wNombre, @wFormula)

    end
    else
    begin
    break
    end
    end

    close CRCodigos
    deallocate CRCodigos

    Aclaro que @wPeri pasa como parámetro del procedimiento, y por cuestiones del ejemplo no están hechos los controles para saber si hay que realizar un COMMIT TRANSACTION o un ROLLBACK TRANSACTION.

    Quiero reemplazar lo de arriba porque hay tablas a las que se les debe ir agregando campos, y eso implica tener que recordar de actualizar este tipo de procedimientos.
    Necesito saber si es posible pasar una variable en lugar de los nombres de los campos en una cláusula INSERT INTO. El ejemplo sería el siguiente:

    declare @wCampos as varchar(1000)
    declare @wPeri as varchar(07)

    set @wCampos='cNumero, cNombre, cFormula'
    set @wPeri ='2009-10'

    INSERT INTO Codigos (cPeri, @wCampos)
    select @wPeri, @wCampos from Codigos where cPeri='2009-09'


    donde @wPeri es el nuevo valor a ingresar.
    @wCampos originalmente viene de un procedimiento que me devuelve en una cadena los nombres de los campos de la tabla Codigos a excepción del campo cPeri. Acá la declaro como variable fija para ahorrar líneas en el ejemplo.

    Esta tabla es un ejemplo, pero son varias tablas con las que tengo que trabajar de la misma forma.
    Probé metiendo la cláusula en una cadena para que @wCampos no diera problema y funciona. La contra de esto es que demora mucho más que el 1º ejemplo.

    También me permite ahorrar líneas de código y no tendría que estar realizandole mantenimiento a este tipo de procedimientos.

    Alguna solución???
    Saludos!
    +
     
    0
    Me gusta
     
    http://www.psicofxp.com/forums/programacion.313/971733-insert-into.html
    | Más
  • #2 Re: Insert into

    ya probaste con new.variable
    Me gusta este mensaje
  • #3 Re: Insert into

    HOla guen! No entiendo lo de new.variable...
    Me gusta este mensaje
  • #4 Re: Insert into

    No entendi bien lo que querés hacer, pero si queres pasarle un string con la consulta SQL lo que podés hacer es lo siguiente:

    SP_EXEC ('INSERT....')

    Cualquier cosa, avisame. Saludos
    Me gusta este mensaje
  • #5 Re: Insert into

    Hola nikkwyjib! Gracias por contestar.
    Comparé los tiempos de ejecución entre sp_sqlexec y el exec simple y no hay mucha diferencia en el tiempo utilizado. No me es útil, ya que necesito bajar los tiempos a mucho menos de la mitad. En la consulta que intento hacer, con exec demora 1' 26'' mientras que con sp_sqlexec demora 1' 24''. Gracias por tu tiempo!
    Saludos!!!
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 4 RESPUESTAS
  • 144 VISTAS
  • 3 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB