ejecturar funcion

26/07/2004 - 12:22 por edu | Informe spam
como puedo ejecutar una funcion que he echo en sql server?
le hago la referencia en el formulario pero cuando quiero asiganar lo que
devuelve esa funcion a una variable no sale el valor esperado
como se haria?
gracias

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
26/07/2004 - 17:40 | Informe spam
como puedo ejecutar una funcion que he echo en sql server?
le hago la referencia en el formulario pero cuando quiero asiganar lo
que devuelve esa funcion a una variable no sale el valor esperado
como se haria?



Llamar la funcion como procedimiento almacenado no funciona. Llamala
ejecutando un comando de tipo Text haciendo un SELECT. Por ejemplo:

Dim cmd As New SqlCommand("SELECT dbo.MiFuncion(1)", cnx)
Dim valor As String

cnx.Open()
valor = CStr(cmd.ExecuteScalar)
cnx.Close()

MessageBox.Show(valor)


Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Leonardo Azpurua
26/07/2004 - 17:40 | Informe spam
"edu" escribió en el mensaje
news:
como puedo ejecutar una funcion que he echo en sql server?
le hago la referencia en el formulario pero cuando quiero asiganar lo que
devuelve esa funcion a una variable no sale el valor esperado
como se haria?
gracias



Hola, Edu:

Normalmente accedo a las funciones mediante un simple SELECT (no se si haya
una manera mejor de hacerlo)

Lo único particular es que se debe especificar el dueño (owner) de la
función.

Por ejemplo, utilizando sqlClient:

...
Dim cmd As New sqlCommand
With cmd
.Connection = myConnection
.CommandText = "SELECT dbo.FechaLimite(" & NumeroDB(Id) & ") As F;"
.CommandType = CommandType.Text
Dim rdr As sqlDataReader = .ExecuteReader
rdr.Read
FechaLimite = CType(rdr.Values(0), Sytem.DateTime)
rdr.Close
.Dispose()
End With
...

y FechaLimite esta definida como:

ALTER FUNCTION dbo.FechaLimite (@idReserva as Bigint)
RETURNS datetime AS
BEGIN
DECLARE @retDate datetime
DECLARE @dateVenc datetime
SET @retDate = (SELECT MIN(Fecha) FROM VUELOS WHERE Vuelos.id IN (SELECT
idVuelo FROM TramosReservas WHERE idReserva = @idReserva))
SET @dateVenc = (SELECT FechaCreacion FROM Reservas WHERE id @idReserva)
SET @dateVenc = DATEADD(d, 5, @datevenc)
IF (@dateVenc > @retDate) Set @DateVenc = @retDate
Return @DateVenc
END

Salud!

Leonardo
[MVP Visual Basic]
leonardo<arroba>mvps<punto>org

"El presente es una luz que palpita entre dos tinieblas"
- Naguib Mahfuz
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida