Ver Mensaje Individual
  #9  
Antiguo 02-10-2008
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Reputación: 22
sitrico Va por buen camino
Logré llegar hasta aquí :

Código SQL [-]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


-- Para ejecutar el procedimiento utilizas:
--Exec ObtenerDatos '1;3.5;2;B4'

ALTER FUNCTION [dbo].[SepararPiezas](@Cadena varchar(30))

RETURNS INTEGER
AS
BEGIN
DECLARE @Piezas varchar(20)
DECLARE @Largo varchar(20)
DECLARE @Alto varchar(20)
DECLARE @Ubicacion varchar(20)

Select @PIezas = SubString(@Cadena, 0, CharIndex(';', @Cadena))
Select @Cadena  = SubString(@Cadena, CharIndex(';', @Cadena)+1,len(@Cadena))
Select @Largo = SubString(@Cadena, 0, CharIndex(';', @Cadena))
Select @Cadena  = SubString(@Cadena, CharIndex(';', @Cadena)+1,len(@Cadena))
Select @Alto = SubString(@Cadena, 0, CharIndex(';', @Cadena))
Select @Ubicacion = SubString(@Cadena, CharIndex(';', @Cadena)+1,len(@Cadena))

RETURN CAST(@Piezas As INTEGER)
END

Que funciona bien y puedo aplicar para los demás caso.

Pero si trato de hacer una funcion global para no tener que repetir todo el código para cada campo, me sale:

Cita:
Msg 102, Level 15, State 31, Procedure SepararAux02, Line 27
Incorrect syntax near 'BEGIN'.
Código SQL [-]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER FUNCTION [dbo].[SepararAux02](@Cadena varchar(30))

RETURNS TABLE
AS
BEGIN
DECLARE @Piezas varchar(20)
DECLARE @Largo varchar(20)
DECLARE @Alto varchar(20)
DECLARE @Ubicacion varchar(20)

Select @PIezas = SubString(@Cadena, 0, CharIndex(';', @Cadena))
Select @Cadena  = SubString(@Cadena, CharIndex(';', @Cadena)+1,len(@Cadena))
Select @Largo = SubString(@Cadena, 0, CharIndex(';', @Cadena))
Select @Cadena  = SubString(@Cadena, CharIndex(';', @Cadena)+1,len(@Cadena))
Select @Alto = SubString(@Cadena, 0, CharIndex(';', @Cadena))
Select @Ubicacion = SubString(@Cadena, CharIndex(';', @Cadena)+1,len(@Cadena))

RETURN
Select cast(@Piezas as integer) as Piezas, 
       cast(@Largo as numeric(9,4)) as Largo ,
     cast(@Alto as numeric(9,4)) as Alto, 
       @Ubicacion as Ubicacion 
END
__________________
Sitrico
Responder Con Cita