Error en función

12/08/2009 - 18:17 por kojikabutosv | Informe spam
Buenos días, podrían ayudarme con ésta función por favor:

alter function _prueba(@sStateprovinceid int)
returns table as
return
if @sStateProvinceId = 0
begin
select * from Adventureworks.Person.Address
end
else
begin
select * from Adventureworks.Person.Address where stateprovinceid =
@sStateProvinceId
end

y me devuelve el siguiente error:

Incorrect syntax near the keyword 'if'.

lo que quiero con esta función es que me devuelva todos los registros si
le envío el valor cero de lo contrario que me devuelva los registro que
corresponden al estado enviado.

Saludos y gracias por su tiempo.

Preguntas similare

Leer las respuestas

#1 aa
12/08/2009 - 18:55 | Informe spam
en vez del segundo return va begin
"kojikabutosv" wrote in message
news:
Buenos días, podrían ayudarme con ésta función por favor:

alter function _prueba(@sStateprovinceid int)
returns table as
return
if @sStateProvinceId = 0
begin
select * from Adventureworks.Person.Address
end
else
begin
select * from Adventureworks.Person.Address where stateprovinceid =
@sStateProvinceId
end

y me devuelve el siguiente error:

Incorrect syntax near the keyword 'if'.

lo que quiero con esta función es que me devuelva todos los registros si
le envío el valor cero de lo contrario que me devuelva los registro que
corresponden al estado enviado.

Saludos y gracias por su tiempo.
Respuesta Responder a este mensaje
#2 kojikabutosv
12/08/2009 - 19:18 | Informe spam
gracias aa por contestar al colocar el begin ahora me retorna el
siguiente error:

Incorrect syntax near 'BEGIN'


saludos y gracias por tu tiempo,


aa escribió:
en vez del segundo return va begin
"kojikabutosv" wrote in message
news:
Buenos días, podrían ayudarme con ésta función por favor:

alter function _prueba(@sStateprovinceid int)
returns table as
return
if @sStateProvinceId = 0
begin
select * from Adventureworks.Person.Address
end
else
begin
select * from Adventureworks.Person.Address where stateprovinceid =
@sStateProvinceId
end

y me devuelve el siguiente error:

Incorrect syntax near the keyword 'if'.

lo que quiero con esta función es que me devuelva todos los registros si
le envío el valor cero de lo contrario que me devuelva los registro que
corresponden al estado enviado.

Saludos y gracias por su tiempo.




Respuesta Responder a este mensaje
#3 Carlos Sacristan
13/08/2009 - 09:45 | Informe spam
No puedes hacer lo que indicas en una función en línea, tienes que usar una
función de tabla. Prueba con:

ALTER FUNCTION _prueba(@sStateProvinceId INT)
RETURNS @return TABLE(
[AddressID] [int] NOT NULL,
[AddressLine1] [nvarchar](60) NOT NULL,
[AddressLine2] [nvarchar](60) NULL,
[City] [nvarchar](30) NOT NULL,
[StateProvinceID] [int] NOT NULL,
[PostalCode] [nvarchar](15) NOT NULL,
[rowguid] [uniqueidentifier] NOT NULL,
[ModifiedDate] [datetime] NOT NULL
)
BEGIN
IF @sStateProvinceId = 0
INSERT @return
SELECT * FROM Adventureworks.Person.Address
ELSE
INSERT @return
SELECT * FROM Adventureworks.Person.Address WHERE stateprovinceid =
@sStateProvinceId

RETURN
END

Echa un vistazo al tema "CREATE FUNCTION" y sus relacionados en los BOL...

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba


"kojikabutosv" wrote in message
news:
Buenos días, podrían ayudarme con ésta función por favor:

alter function _prueba(@sStateprovinceid int)
returns table as
return
if @sStateProvinceId = 0
begin
select * from Adventureworks.Person.Address
end
else
begin
select * from Adventureworks.Person.Address where stateprovinceid =
@sStateProvinceId
end

y me devuelve el siguiente error:

Incorrect syntax near the keyword 'if'.

lo que quiero con esta función es que me devuelva todos los registros si
le envío el valor cero de lo contrario que me devuelva los registro que
corresponden al estado enviado.

Saludos y gracias por su tiempo.
Respuesta Responder a este mensaje
#4 kojikabutosv
13/08/2009 - 16:17 | Informe spam
gracias Carlos por tu tiempo, voy a probar el ejemplo que me envías.

Exitos!!!!


Carlos Sacristan escribió:
No puedes hacer lo que indicas en una función en línea, tienes que usar
una función de tabla. Prueba con:

ALTER FUNCTION _prueba(@sStateProvinceId INT)
RETURNS @return TABLE(
[AddressID] [int] NOT NULL,
[AddressLine1] [nvarchar](60) NOT NULL,
[AddressLine2] [nvarchar](60) NULL,
[City] [nvarchar](30) NOT NULL,
[StateProvinceID] [int] NOT NULL,
[PostalCode] [nvarchar](15) NOT NULL,
[rowguid] [uniqueidentifier] NOT NULL,
[ModifiedDate] [datetime] NOT NULL
)
BEGIN
IF @sStateProvinceId = 0
INSERT @return
SELECT * FROM Adventureworks.Person.Address
ELSE
INSERT @return
SELECT * FROM Adventureworks.Person.Address WHERE stateprovinceid =
@sStateProvinceId

RETURN
END

Echa un vistazo al tema "CREATE FUNCTION" y sus relacionados en los BOL...

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida