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