Funciones y GETDATE()

25/05/2006 - 00:47 por Pablo Rodríguez | Informe spam
Tengo la siguiente función:

CREATE FUNCTION fnObtenerLicenciasVencidas
(
)
RETURNS TABLE
AS
RETURN
(
SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM
tblLicencia L
INNER JOIN tblCliente C
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre
)
GO

y recibo la siguiente respuesta:

Msg 443, Level 16, State 1, Procedure fnObtenerLicenciasNODVencidas,
Line 19
Uso no válido de 'getdate' en una función.

Alguien me puede decir donde está el error por favor??
Muchas Gracias por adelantado!

Preguntas similare

Leer las respuestas

#6 Eduardo Castro
25/05/2006 - 17:49 | Informe spam
GetDate no se puede utilizar en funciones

Eduardo Castro
Microsoft MVP
MCSE 2003+Security, MCDBA, MCSD .NET, CCNA

"Pablo Rodríguez" wrote in message
news:e%
Tengo la siguiente función:

CREATE FUNCTION fnObtenerLicenciasVencidas
(
)
RETURNS TABLE
AS
RETURN
(
SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM
tblLicencia L
INNER JOIN tblCliente C
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre
)
GO

y recibo la siguiente respuesta:

Msg 443, Level 16, State 1, Procedure
fnObtenerLicenciasNODVencidas, Line 19
Uso no válido de 'getdate' en una función.

Alguien me puede decir donde está el error por favor??
Muchas Gracias por adelantado!

Respuesta Responder a este mensaje
#7 Pablo Rodríguez
25/05/2006 - 21:34 | Informe spam
No comprendo... como lo harías?



"Jhonny Vargas P. [MVP]" escribió en el
mensaje news:%23iqfEy$
Hola Pablo,

Consulta: ¿para que usar una función si estás devolviendo registros, no
sería más factible utilizar un Procedimiento Almacenado?

PD: Solo por preguntar ;)

Saludos,
Jhonny Vargas P.
Santiago de Chile


"Pablo Rodríguez" escribió en el mensaje
news:e%
Tengo la siguiente función:

CREATE FUNCTION fnObtenerLicenciasVencidas
(
)
RETURNS TABLE
AS
RETURN
(
SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM
tblLicencia L
INNER JOIN tblCliente C
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre
)
GO

y recibo la siguiente respuesta:

Msg 443, Level 16, State 1, Procedure
fnObtenerLicenciasNODVencidas, Line 19
Uso no válido de 'getdate' en una función.

Alguien me puede decir donde está el error por favor??
Muchas Gracias por adelantado!





Respuesta Responder a este mensaje
#8 Jhonny Vargas P. [MVP]
26/05/2006 - 14:45 | Informe spam
CREATE PROCEDURE spObtenerLicenciasVencidas
AS

SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM tblLicencia L (NOLOCK)
INNER JOIN tblCliente C (NOLOCK)
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre


Saludos,
Jhonny Vargas P.
Santiago de Chile

"Pablo Rodríguez" escribió en el mensaje
news:
No comprendo... como lo harías?



"Jhonny Vargas P. [MVP]" escribió en el
mensaje news:%23iqfEy$
Hola Pablo,

Consulta: ¿para que usar una función si estás devolviendo registros, no
sería más factible utilizar un Procedimiento Almacenado?

PD: Solo por preguntar ;)

Saludos,
Jhonny Vargas P.
Santiago de Chile


"Pablo Rodríguez" escribió en el mensaje
news:e%
Tengo la siguiente función:

CREATE FUNCTION fnObtenerLicenciasVencidas
(
)
RETURNS TABLE
AS
RETURN
(
SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM
tblLicencia L
INNER JOIN tblCliente C
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre
)
GO

y recibo la siguiente respuesta:

Msg 443, Level 16, State 1, Procedure
fnObtenerLicenciasNODVencidas, Line 19
Uso no válido de 'getdate' en una función.

Alguien me puede decir donde está el error por favor??
Muchas Gracias por adelantado!









Respuesta Responder a este mensaje
#9 Pablo Rodríguez
26/05/2006 - 23:40 | Informe spam
Es que soy nuevo con los Proc Alamcenados y funciones, entonces creí que
sólo podía hacerlo con funciones,
¿cómo llamas a un proc así desde VB.NET?

Saludos


"Jhonny Vargas P. [MVP]" escribió en el
mensaje news:
CREATE PROCEDURE spObtenerLicenciasVencidas
AS

SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM tblLicencia L (NOLOCK)
INNER JOIN tblCliente C (NOLOCK)
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre


Saludos,
Jhonny Vargas P.
Santiago de Chile

"Pablo Rodríguez" escribió en el mensaje
news:
No comprendo... como lo harías?



"Jhonny Vargas P. [MVP]" escribió en el
mensaje news:%23iqfEy$
Hola Pablo,

Consulta: ¿para que usar una función si estás devolviendo registros, no
sería más factible utilizar un Procedimiento Almacenado?

PD: Solo por preguntar ;)

Saludos,
Jhonny Vargas P.
Santiago de Chile


"Pablo Rodríguez" escribió en el mensaje
news:e%
Tengo la siguiente función:

CREATE FUNCTION fnObtenerLicenciasVencidas
(
)
RETURNS TABLE
AS
RETURN
(
SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM
tblLicencia L
INNER JOIN tblCliente C
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre
)
GO

y recibo la siguiente respuesta:

Msg 443, Level 16, State 1, Procedure
fnObtenerLicenciasNODVencidas, Line 19
Uso no válido de 'getdate' en una función.

Alguien me puede decir donde está el error por favor??
Muchas Gracias por adelantado!













Respuesta Responder a este mensaje
#10 Jhonny Vargas P. [MVP]
27/05/2006 - 00:15 | Informe spam
Hola Pablo,

Lo puedes invocar de 2 formas:

1. Como un Procedimiento Almacenado
Ejemplo:
ConString = "string de coneccion a la base de datos."
Dim objConnection As New SqlClient.SqlConnection(ConString), _
objCommand As New SqlClient.SqlCommand, _
objDataSet As New DataSet, _
myDataAdapter As SqlClient.SqlDataAdapter

myDataAdapter = New SqlClient.SqlDataAdapter("sp_nombreprocedimiento",
objConnection)
myDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
myDataAdapter.Fill(objDataSet, "tabla")

objConnection.Close()

En objDataSet tienes el resultado de la operación.

2. Como una consulta cualquiera a la base de datos:

ConString = "string de coneccion a la base de datos."
Dim objConnection As New SqlClient.SqlConnection(ConString), _
objCommand As New SqlClient.SqlCommand, _
objDataSet As New DataSet, _
myDataAdapter As SqlClient.SqlDataAdapter

myDataAdapter = New SqlClient.SqlDataAdapter("sp_nombreprocedimiento",
objConnection)
myDataAdapter.SelectCommand.CommandType = CommandType.Text
myDataAdapter.Fill(objDataSet, "tabla")

objConnection.Close()

En este caso la única diferencia establecida es el COMMANDTYPE.TEXT o
COMMANDTYPE.STOREPROCEDURE ya que no se envía ningún parámetro al SP si
se llega a enviar un parámetro, hay que especificar en el primer punto que
nombre es el parámetro de que tipo es, y el valor.

Espero te sirva.

Saludos,
Jhonny Vargas P.
Santiago de Chile



"Pablo Rodríguez" escribió en el mensaje
news:%
Es que soy nuevo con los Proc Alamcenados y funciones, entonces creí que
sólo podía hacerlo con funciones,
¿cómo llamas a un proc así desde VB.NET?

Saludos


"Jhonny Vargas P. [MVP]" escribió en el
mensaje news:
CREATE PROCEDURE spObtenerLicenciasVencidas
AS

SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM tblLicencia L (NOLOCK)
INNER JOIN tblCliente C (NOLOCK)
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre


Saludos,
Jhonny Vargas P.
Santiago de Chile

"Pablo Rodríguez" escribió en el mensaje
news:
No comprendo... como lo harías?



"Jhonny Vargas P. [MVP]" escribió en
el mensaje news:%23iqfEy$
Hola Pablo,

Consulta: ¿para que usar una función si estás devolviendo registros, no
sería más factible utilizar un Procedimiento Almacenado?

PD: Solo por preguntar ;)

Saludos,
Jhonny Vargas P.
Santiago de Chile


"Pablo Rodríguez" escribió en el mensaje
news:e%
Tengo la siguiente función:

CREATE FUNCTION fnObtenerLicenciasVencidas
(
)
RETURNS TABLE
AS
RETURN
(
SELECT TOP 100 PERCENT C.Nombre + ' ' + C.Apellido AS Cliente, L.*
FROM
tblLicencia L
INNER JOIN tblCliente C
ON L.IdCliente = C.Id
WHERE L.Vencimiento < GETDATE()
ORDER BY C.Apellido, C.Nombre
)
GO

y recibo la siguiente respuesta:

Msg 443, Level 16, State 1, Procedure
fnObtenerLicenciasNODVencidas, Line 19
Uso no válido de 'getdate' en una función.

Alguien me puede decir donde está el error por favor??
Muchas Gracias por adelantado!

















Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida