Ver Mensaje Individual
  #8 (permalink)  
Antiguo 02/05/2007, 16:23
Martinico
 
Fecha de Ingreso: febrero-2007
Mensajes: 182
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Devolver un parametro en una variable y hacer un select

teminé con mi procedure...les dejo la solución ya que han sido de gran ayuda, por si la precisan algún día



CREATE PROCEDURE CadyResto

@Texto varchar(100),@Tipo Char(1),@Largo int,@txtAcotado varchar(100) output,
@txtresto varchar(100) output
AS
set nocount on

--@Texto varchar(100), texto a formatear
--@Tipo Char(1), N=numero , C=char
--@Largo int largo a paddear
--@txtAcotado varchar(100) String de @texto acotado por el largo @largo
--@txtresto varchar(100) String de @texto, excluido por el largo @largo
----------
BEGIN
/*
Procedimiento que hace el trim de un string y lo rellena con ceros o espacios en caso de ser su largo menor que @largo, y
devuelve en la variable @resto el string "desechado" en caso de ser el largo mayor a @largo
*/

--chequeo que el parametro no sea nulo
Set @Texto= ISNULL(@Texto,'')

--chequeo que el largo sea correcto
IF @Largo<0 set @Largo=0

IF @Tipo='N'
BEGIN
--Tipo numerico lo completo con 0
set @txtacotado = REPLICATE('0', @Largo - datalength(dbo.Trim(isNull( @Texto,''))) ) + dbo.TRIM(@Texto)
END
ELSE
BEGIN
--Tipo caracter lo completo con ' '

set @txtacotado= LEFT(DBO.TRIM(ISNULL(@Texto,'')), @largo)
-- +REPLICATE(' ',@Largo - datalength(LEFT( dbo.TRIM(isNull( @Texto,'' ) ),@Largo ) ) )

set @txtresto = RIGHT(DBO.TRIM(ISNULL(@Texto,'')), len(DBO.TRIM(@Texto)) - @largo)


-- set @txtacotado = LEFT(dbo.TRIM (ISNULL(@Texto,'') ), @Largo) + REPLICATE(' ',@Largo - datalength(LEFT( dbo.TRIM(isNull( @Texto,'' ) ),@Largo ) ) )
-- set @txtresto = RIGHT(dbo.TRIM (ISNULL(@Texto,'') ), datalength(@texto)-@Largo) + REPLICATE(' ',160 - datalength(LEFT( dbo.TRIM(isNull( @Texto,'' ) ),160 ) ) )
END




--select @txtAcotado




END
GO

//////////
Martin