none
Problema con comando BCP RRS feed

  • Pregunta

  • Hola:

    Buenos noches, tengo un problema con el comando BCP. Tengo un procedure que recibe dos parámetros y según esos parámetros me sale un resultado. Mi procedure esta compuesto por varios if que varian según los valores de los parámetros. Cuando intento exportarlo en un txt tengo error cada vez que lo llamo por el comando bcp. Intente comentando todo y solo poniendo el primer if y ahi recién puedo exportarlo , si pongo otros if me sale error. Por ejemplo,  una parte de mi mi procedure es asi: 

    alter procedure [dbo].[extraccion_txt_fija_movil]

    @tipo_reporte VARCHAR(20),
    @sistema varchar(100)

    AS
    BEGIN

    SET NOCOUNT ON

    DECLARE  @MES INT
    DECLARE  @AÑO INT

    SELECT @MES  =  MONTH(GETDATE())

    SELECT @AÑO = YEAR(GETDATE())

    IF @tipo_reporte = 'REGISTRADOS' and @sistema = 'a' 

    begin

    select TOP 1000
    cast(casoreguladorid as varchar(1800)),
    cast(casokey as varchar(1800)),
    cast(casonumero as varchar(1800)),
    cast(cast (suscriptorkey as int) as varchar),
    cast(calc_tipo_reclamo as varchar(1800)),
    cast(calc_cluster_motivos as varchar(1800)),
    cast(calc_sistema as varchar(1800)),
    cast(suscriptortelefono as varchar(1800)),
    cast(calc_segmento as varchar(1800)),
    cast(calc_valor as varchar(1800)),
    from [soluciones_produccion].[dbo].[ttc_movil_amdocs_primera_todos_registrados] a
    where calc_x_indicador = 'x'
    where month(casoaperturafecha) = @mes
    and year(casoaperturafecha) = @año

    end

    IF @tipo_reporte = 'REGISTRADOS' and @sistema = 'b'

    begin

    SELECT TOP 1000
    cast(calc_reclamo_codigo as varchar(1800)),
    cast('' as varchar(1800)),
    cast('' as varchar(1800)),
    cast(tcnfol as varchar(1800)),
    cast('' as varchar(1800)),
    cast(calc_tipo_reclamo as varchar(1800)),
    cast(calc_cluster_motivos as varchar(1800)),
    cast(calc_sistema as varchar(1800)),
    cast(tcntel as varchar(1800)),
    cast(calc_segmento as varchar(1800)),
    cast(calc_valor as varchar(1800))
    from  [SOLUCIONES_PRODUCCION].[dbo].[ttc_movil_stc_todos_registrados] a
    where  month(calc_fecha_registrado)= @MES
    and year(calc_fecha_registrado) = @AÑO

    end

    end

    Cuando esta todo no me funciona, pero cuando comento la segunda parte si puede exportarlo a un txt. ¿A que se debe eso? . Por favor necesito ayuda he investigado en todas partes pero  no encuentro solución.

    martes, 27 de noviembre de 2018 0:07

Respuestas

  • ¿Qué versión de SQL Server es? Había un bug en la 2008 que producía este tipo de errores.

    Prueba a poner esto al principio del procedimiento almacenado:

    SET FMTONLY OFF

    martes, 27 de noviembre de 2018 8:34

Todas las respuestas

  • ¿Qué versión de SQL Server es? Había un bug en la 2008 que producía este tipo de errores.

    Prueba a poner esto al principio del procedimiento almacenado:

    SET FMTONLY OFF

    martes, 27 de noviembre de 2018 8:34
  • Postea el SP completo y el comando bcp con el error que obtienes para poder ayudarte.

    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    martes, 27 de noviembre de 2018 8:53
  • @tipo_reporte VARCHAR(20),
    @sistema varchar(100)

    AS
    BEGIN

    SET NOCOUNT ON

    DECLARE  @MES INT
    DECLARE  @AÑO INT

    SELECT @MES  =  MONTH(GETDATE())

    SELECT @AÑO = YEAR(GETDATE())

    IF @sistema = 'a' and @tipo_reporte =  'REGISTRADOS'  goto OpcA

    IF @sistema = 'b' and @tipo_reporte =  'REGISTRADOS'  goto OpcB

    goto Fin

    OpcA:

    select TOP 1000
    cast(casoreguladorid as varchar(1800)),
    cast(casokey as varchar(1800)),
    cast(casonumero as varchar(1800)),
    cast(cast (suscriptorkey as int) as varchar),
    cast(calc_tipo_reclamo as varchar(1800)),
    cast(calc_cluster_motivos as varchar(1800)),
    cast(calc_sistema as varchar(1800)),
    cast(suscriptortelefono as varchar(1800)),
    cast(calc_segmento as varchar(1800)),
    cast(calc_valor as varchar(1800)),
    from [soluciones_produccion].[dbo].[ttc_movil_amdocs_primera_todos_registrados] a
    where calc_x_indicador = 'x'
    where month(casoaperturafecha) = @mes
    and year(casoaperturafecha) = @año

    goto Fin

    OpcB:

    SELECT TOP 1000
    cast(calc_reclamo_codigo as varchar(1800)),
    cast('' as varchar(1800)),
    cast('' as varchar(1800)),
    cast(tcnfol as varchar(1800)),
    cast('' as varchar(1800)),
    cast(calc_tipo_reclamo as varchar(1800)),
    cast(calc_cluster_motivos as varchar(1800)),
    cast(calc_sistema as varchar(1800)),
    cast(tcntel as varchar(1800)),
    cast(calc_segmento as varchar(1800)),
    cast(calc_valor as varchar(1800))
    from  [SOLUCIONES_PRODUCCION].[dbo].[ttc_movil_stc_todos_registrados] a
    where  month(calc_fecha_registrado)= @MES
    and year(calc_fecha_registrado) = @AÑO

    goto Fin

    Fin:

    end


    • Editado Kstrini martes, 27 de noviembre de 2018 16:15 Error
    • Propuesto como respuesta Kstrini martes, 27 de noviembre de 2018 16:15
    martes, 27 de noviembre de 2018 16:13
  • Mil gracias!!!!!!! . Me ayudo a resolver mi problema.
    martes, 27 de noviembre de 2018 21:10