none
Como convertir un numero a caracter

    Question

  • ALTER PROC..

     (@p_id_colonia CHAR(10)= NULL ,
    .
    @msg
    AS VARCHAR(100) OUTPUT)
    AS
    declare
    @ultimo int
    declare
    @ultimoo int
    declare
    @id varchar (10)
    declare @conversion char(10)
    BEGIN
            set
    @ultimo=(SELECT IDENT_CURRENT('colonias') AS Expr1)
         if @ultimo < 0
            begin
               SET
    @msg = 'ERROR'
              
    goto final
            end
         else
            begin
               set
    @ultimoo = @ultimo+1
               set @id= @p_id_colonia + convert(varchar(6),@ultimoo)
             end
    alguien me puede ayudar. el id se compone de una palabra que recibe el procedimiento almacenado y el ultimo pk mas uno de la tabla @id pero solo me regresa el valo de @p_id_colonia

     

     

     

    Tuesday, April 07, 2009 5:46 PM

Answers

  • Hola si el problema que tienes es que no te retorna el valor de la variable @id, la cual es la que estas calculando con este procedimiento almacenado, podrias lograrlo declarandola como parametro output al igual que como lo hiciste con la variable @msg, o la otra forma seria luego de realizar el calculo que alli tienes, haciendo un select de @id para que te devuelva su valor como conjunto de resultados.

    Te recomendaria tambien declarar la variable @id con un tipo char(16),  ya que la variable @ultimoo la conviertes a varchar(6) y la variable @p_id_colonia la declaras char(10)

    Saludos
    Andrés González MCITP | Business Intelligence Developer - MCPD | Web Developer http://www.intermezzo-bi.com
    Tuesday, April 07, 2009 6:09 PM
  • Me parece que lo que esta pasando es que el tamaño de tu variable es muy pequeño o en todo caso te falta eliminar los espacios en blanco

    declare @id varchar (10)  ---- > 10
    (@p_id_colonia CHAR(10) + convert(varchar(6),@ultimoo)  ---  16

    un cambio rápido podría ser el siguiente:

    declare @id varchar (16) 
    ...
    set
    @id=Rtrim( @p_id_colonia) + Ltrim(convert(varchar(6),@ultimoo))
    ...

    Espero te sirva

    Saludos
    Tuesday, April 07, 2009 6:09 PM

All replies

  • Hola si el problema que tienes es que no te retorna el valor de la variable @id, la cual es la que estas calculando con este procedimiento almacenado, podrias lograrlo declarandola como parametro output al igual que como lo hiciste con la variable @msg, o la otra forma seria luego de realizar el calculo que alli tienes, haciendo un select de @id para que te devuelva su valor como conjunto de resultados.

    Te recomendaria tambien declarar la variable @id con un tipo char(16),  ya que la variable @ultimoo la conviertes a varchar(6) y la variable @p_id_colonia la declaras char(10)

    Saludos
    Andrés González MCITP | Business Intelligence Developer - MCPD | Web Developer http://www.intermezzo-bi.com
    Tuesday, April 07, 2009 6:09 PM
  • Me parece que lo que esta pasando es que el tamaño de tu variable es muy pequeño o en todo caso te falta eliminar los espacios en blanco

    declare @id varchar (10)  ---- > 10
    (@p_id_colonia CHAR(10) + convert(varchar(6),@ultimoo)  ---  16

    un cambio rápido podría ser el siguiente:

    declare @id varchar (16) 
    ...
    set
    @id=Rtrim( @p_id_colonia) + Ltrim(convert(varchar(6),@ultimoo))
    ...

    Espero te sirva

    Saludos
    Tuesday, April 07, 2009 6:09 PM
  • afirmativo.. muchismas gracias a los dos pora dar un tiempo a mi pregunta de igual manera la respuesta que utilice fue la  que me quita los espacios pero de igual manera muchas gracias por su tiempo .. y ojala en algo les pueda ayudar..
    Tuesday, April 07, 2009 6:15 PM