Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Funcion en SQL Server

Estas en el tema de Funcion en SQL Server en el foro de Bases de Datos General en Foros del Web. Buenas, Utilizo el Microsoft SQL Server, pues bien, he ido al apartado de hacer funciones(ahora no me acuerdo como se llama) y he creado un ...
  #1 (permalink)  
Antiguo 25/08/2005, 08:23
 
Fecha de Ingreso: diciembre-2003
Mensajes: 288
Antigüedad: 20 años, 4 meses
Puntos: 0
Funcion en SQL Server

Buenas,

Utilizo el Microsoft SQL Server, pues bien, he ido al apartado de hacer funciones(ahora no me acuerdo como se llama) y he creado un con el objetivo de que modifique el campo de otra tabla, me explico, en una tabla X tengo un campo que se llama numero, pues bien este depende de una tabla Y , es decir, cada vez que se cree un nuevo registro en esa tabla Y el campo numero de la tabla X deberá incrementarse o si se elimina un registro deberá decrementarse.(por lo que la consulta la he hecho con un simple SELECT COUNT)

Pues bien, la consulta se llama control_val, y aparece en el apartado de funciones del sql como dbo.control_val(ya que el dbo es usuario general) y el examinador dice que esta correcta.

Entonces me voy a la tabla X(donde tengo el campo numero) y me voy a la opcion "formula" y alli pongo:
=control_val(Id), este Id es el campo primario de la tabla y es el que recibe la consulta, pero me da error, y tb lo he probado como:

=control_val(NombreTabla.NombreCampo), y tampoco alguna idea?¿

GRACIAS
  #2 (permalink)  
Antiguo 25/08/2005, 08:42
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cual es el code de tu función ..???

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 25/08/2005, 08:55
 
Fecha de Ingreso: diciembre-2003
Mensajes: 288
Antigüedad: 20 años, 4 meses
Puntos: 0
RootK como no tu siempre al rescate, pues sino te importa te lo copio mñn, que ahora no me acuerdo de memoria, pero para que te hagas una idea

Function owerd(algo asi) dbo.control_val (@idec)
XXX
XXX
RETURN(Select COUNT (Numeros) FROM X WHERE IdEc="+@idec+";

Algo asi no me acuerdo, ya que no lo tengo delante, de todas formas si pudes darme alguna orientacion yo mñn por la mñn lo pruebo y te digo algo

muchas gracias
  #4 (permalink)  
Antiguo 26/08/2005, 00:03
 
Fecha de Ingreso: diciembre-2003
Mensajes: 288
Antigüedad: 20 años, 4 meses
Puntos: 0
La funcion concreta Rootk es:

CREATE FUNCTION dbo.[encontrar_valv] (@ic int)
RETURNS int AS
BEGIN
RETURN (SELECT COUNT (IdNodo) FROM Nodos WHERE IdEC= @ic)
END

No me acordaba ni del nombre :), esa memoria q tengo....
  #5 (permalink)  
Antiguo 26/08/2005, 08:34
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Pues la funcion la veo bien, no le encuentro problemas...

Ya probaste haciendo algo como ésto desde tu query analyser..

Cita:
SELECT dbo.[encontrar_valv](ID) FROM Tabla
Y obviamente el ID que le estás pasando es de tipo int..
  #6 (permalink)  
Antiguo 26/08/2005, 15:47
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
No recuerdo exactamente, pero algunas veces los return son un poco quisquillosos y hay que usar una variable temporal, algo como:
Código:
CREATE FUNCTION dbo.encontrar_valv (@ic int)
RETURNS int AS
BEGIN
DECLARE @valv INT
SELECT @valv=COUNT(IdNodo) FROM Nodos WHERE IdEC= @ic
RETURN @valv
END
GO

SELECT dbo.encontrar_valv(1)
GO
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #7 (permalink)  
Antiguo 27/08/2005, 20:10
 
Fecha de Ingreso: diciembre-2003
Mensajes: 288
Antigüedad: 20 años, 4 meses
Puntos: 0
gracias a los dos, y perdon por contestar tarde, pero es que los fines de semana no estoy en casa, era algo parecido como habeis dicho, lo q he puesto la funcion y como solo quiera hacerlo cuando fuese un insert o delete lo he unido a un trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 08:19.