Función escalar

22/10/2005 - 12:38 por Raipon | Informe spam
Hola. Pido disculpas por adelantado si les parece que esta pregunta es
trivial. Pero la verdad es que no consigo ver donde está el problema.
Tengo MSDE 2000 instalado y desde un programa que hace las veces de
Administrador corporativo intento crear una función definida por el usuario.
Uso la siguiente sentencia :

Create Function dbo.Prueba
RETURNS TABLE
AS
RETURN (Select * From Productes)

Pero siempre obtengo el siguiente error .

OLE IDispatch exception code 170 from Microsoft SQL ( 42000): Line 91:
Incorrect syntax near 'RETURNS'.A RETURN statement with a return value

Espero que puedan ayudarme. Muchas gracias.

Preguntas similare

Leer las respuestas

#1 cali
22/10/2005 - 19:40 | Informe spam
mejor lo hubieras hecho con una vista que te devuelva ese conjunto de
resultados, para devolver un tipo table en un udf tiene que contruir una
tabla en la declaracion y hacerle el insert luego para que te devuelva la
data

aqui va un ejemplo, k espero k te sirva

CREATE FUNCTION dbo.customersbycountry (@Country varchar(15))
RETURNS @CustomersbyCountryTab table
([CustomerID] [nchar] (5), [CompanyName] [nvarchar] (40), [ContactName]
[nvarchar] (30),
[ContactTitle] [nvarchar] (30), [Address] [nvarchar] (60), [City] [nvarchar]
(15),
[PostalCode] [nvarchar] (10), [Country] [nvarchar] (15), [Phone] [nvarchar]
(24),
[Fax] [nvarchar] (24)
)
as
begin
insert into @CustomersByCountryTab
SELECT [CustomerID],
[CompanyName],
[ContactName],
[ContactTitle],
[Address],
[City],
[PostalCode],
[Country],
[Phone],
[Fax]
FROM [Northwind].[dbo].[Customers]
where country = @Country

return
end
SELECT * FROM dbo.customersbycountry('USA')
SELECT * FROM dbo.customersbycountry('CANADA')
SELECT * FROM dbo.customersbycountry('ADF')




"Raipon" escribió en el mensaje
news:
Hola. Pido disculpas por adelantado si les parece que esta pregunta es
trivial. Pero la verdad es que no consigo ver donde está el problema.
Tengo MSDE 2000 instalado y desde un programa que hace las veces de
Administrador corporativo intento crear una función definida por el
usuario.
Uso la siguiente sentencia :

Create Function dbo.Prueba
RETURNS TABLE
AS
RETURN (Select * From Productes)

Pero siempre obtengo el siguiente error .

OLE IDispatch exception code 170 from Microsoft SQL ( 42000): Line 91:
Incorrect syntax near 'RETURNS'.A RETURN statement with a return value

Espero que puedan ayudarme. Muchas gracias.

Respuesta Responder a este mensaje
#2 Miguel Egea
22/10/2005 - 20:24 | Informe spam
El problema es que estás mezclando la sintaxis de las funciones de tipo
tabla con las in-line, si pones returns table tienes que especificar el
formato de la tabla si lo que quieres es hacer una vista con parámetros
puedes poner tu sentncia después del retunrs entre parentesis y listo.

Saludos
Miguel Egea
SQL Server MVP

"Raipon" wrote in message
news:
Hola. Pido disculpas por adelantado si les parece que esta pregunta es
trivial. Pero la verdad es que no consigo ver donde está el problema.
Tengo MSDE 2000 instalado y desde un programa que hace las veces de
Administrador corporativo intento crear una función definida por el
usuario.
Uso la siguiente sentencia :

Create Function dbo.Prueba
RETURNS TABLE
AS
RETURN (Select * From Productes)

Pero siempre obtengo el siguiente error .

OLE IDispatch exception code 170 from Microsoft SQL ( 42000): Line 91:
Incorrect syntax near 'RETURNS'.A RETURN statement with a return value

Espero que puedan ayudarme. Muchas gracias.
Respuesta Responder a este mensaje
#3 Alejandro Mesa
22/10/2005 - 22:08 | Informe spam
Raipon,

Los parentesis que delimitan los parametros no son opcionales.

Create Function dbo.Prueba
RETURNS TABLE
AS
RETURN (Select * From Productes)



Create Function dbo.Prueba()
RETURNS TABLE
AS
RETURN (Select * From Productes)
go

Como dijo "cali", en este caso seria mejor crear una vista pues a la final
no pasas ningun parametro a la funcion.


AMB

"Raipon" wrote:

Hola. Pido disculpas por adelantado si les parece que esta pregunta es
trivial. Pero la verdad es que no consigo ver donde está el problema.
Tengo MSDE 2000 instalado y desde un programa que hace las veces de
Administrador corporativo intento crear una función definida por el usuario.
Uso la siguiente sentencia :

Create Function dbo.Prueba
RETURNS TABLE
AS
RETURN (Select * From Productes)

Pero siempre obtengo el siguiente error .

OLE IDispatch exception code 170 from Microsoft SQL ( 42000): Line 91:
Incorrect syntax near 'RETURNS'.A RETURN statement with a return value

Espero que puedan ayudarme. Muchas gracias.
Respuesta Responder a este mensaje
#4 Miguel Egea
23/10/2005 - 11:33 | Informe spam
Sorry, no hagas caso a mi comentario, fijate en lo que hizo alejandro, no
tenía un SQL a mano y me traicionó la memoria.

Saludos
Miguel Egea
SQL Server MVP
"Miguel Egea" wrote in message
news:
El problema es que estás mezclando la sintaxis de las funciones de tipo
tabla con las in-line, si pones returns table tienes que especificar el
formato de la tabla si lo que quieres es hacer una vista con parámetros
puedes poner tu sentncia después del retunrs entre parentesis y listo.

Saludos
Miguel Egea
SQL Server MVP

"Raipon" wrote in message
news:
Hola. Pido disculpas por adelantado si les parece que esta pregunta es
trivial. Pero la verdad es que no consigo ver donde está el problema.
Tengo MSDE 2000 instalado y desde un programa que hace las veces de
Administrador corporativo intento crear una función definida por el
usuario.
Uso la siguiente sentencia :

Create Function dbo.Prueba
RETURNS TABLE
AS
RETURN (Select * From Productes)

Pero siempre obtengo el siguiente error .

OLE IDispatch exception code 170 from Microsoft SQL ( 42000): Line 91:
Incorrect syntax near 'RETURNS'.A RETURN statement with a return value

Espero que puedan ayudarme. Muchas gracias.




Respuesta Responder a este mensaje
#5 Raipon
23/10/2005 - 17:31 | Informe spam
Muchas gracias a todos. Efectivamente eran los parentesis. Asunto solucionado.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida