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

procedures OR function IN(SQL) :)

Estas en el tema de procedures OR function IN(SQL) :) en el foro de Bases de Datos General en Foros del Web. si es posible... como puedo crear una funcion/procedimiento dentro de la base de datos en SQL para q mueva un registro de una tabla a ...
  #1 (permalink)  
Antiguo 02/01/2004, 06:34
Avatar de sanfermin  
Fecha de Ingreso: diciembre-2001
Mensajes: 601
Antigüedad: 22 años, 4 meses
Puntos: 2
procedures OR function IN(SQL) :)

si es posible... como puedo crear una funcion/procedimiento dentro de la base de datos en SQL para q mueva un registro de una tabla a otra?

salu2 y Prospero año nuevo
__________________
MainMind.com
La blasfemia es el único lenguaje que de verdad conocen todos los programadores
  #2 (permalink)  
Antiguo 04/01/2004, 20:00
Avatar de sanfermin  
Fecha de Ingreso: diciembre-2001
Mensajes: 601
Antigüedad: 22 años, 4 meses
Puntos: 2
Alguna idea?
__________________
MainMind.com
La blasfemia es el único lenguaje que de verdad conocen todos los programadores
  #3 (permalink)  
Antiguo 07/01/2004, 10:15
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Pero como????? que lo mueva cada cierto tiempo, de vea en cuando, bajo petición, ¿¿¿ ???, al insertarse...
  #4 (permalink)  
Antiguo 07/01/2004, 11:35
Avatar de sanfermin  
Fecha de Ingreso: diciembre-2001
Mensajes: 601
Antigüedad: 22 años, 4 meses
Puntos: 2
x ejemplo, al pasar un ID o el nombre d un campo

mas ejemplos:

mover([email protected]) -> moveria el registro entero dnd un campo X sea = a [email protected] a otra tabla

__________________
MainMind.com
La blasfemia es el único lenguaje que de verdad conocen todos los programadores
  #5 (permalink)  
Antiguo 07/01/2004, 11:55
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Quieres decir al grabar un nuevo registo??? o quieres crear un procedimiento almacenado para ejecutarlo y que mueva todos los registros que cumplan por ejemplo la condición que explicas
  #6 (permalink)  
Antiguo 07/01/2004, 12:24
Avatar de sanfermin  
Fecha de Ingreso: diciembre-2001
Mensajes: 601
Antigüedad: 22 años, 4 meses
Puntos: 2
crear un procedimiento si es posible q dado un valor, seleccione el registro q cumpla una condición (1 solo reistro) y lo mueva de una tabla a otra
__________________
MainMind.com
La blasfemia es el único lenguaje que de verdad conocen todos los programadores
  #7 (permalink)  
Antiguo 07/01/2004, 12:58
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Para ello primero creas el procedimiento almacenado para copiar de la tabla origen a la destino, y la segunda parte es la de borrar el registro copiado, y aquí es dónde se complica la cosa.

Tienes algún campo único en esa tabla???? la primary key??? si es así, obtienes el campo único para un registro que cumpla la condición que quieres, y utilizas ese código para copiar y borrar.

Create procedure MoverDatos (@valorBuscar varchar(13) ) AS

declare @IndiceUnico varchar(5)

SELECT @IndiceUnico = CampoClave FROM TuTablaOrigen WHERE CampoBuscar = @valorBuscar

INSERT INTO TablaDestino(Campo1, Campo2...., CampoN)
SELECT Campo1, Campo2, ... CampoN FROM TablaOrigen WHERE CampoClave = @IndiceUnico

DELETE FROM TablaOrigen WHERE CampoClave = @IndiceUnico

RETURN



Con esto debería ir, sólo tienes que declarar los tipos de datos que uses y tus tablas, comprueba la sintaxis que lo he hecho de memoria.

Un saludo
  #8 (permalink)  
Antiguo 07/01/2004, 13:13
Avatar de sanfermin  
Fecha de Ingreso: diciembre-2001
Mensajes: 601
Antigüedad: 22 años, 4 meses
Puntos: 2
matices

si q tengo definidas claves principales en ambas tablas (ID) pero no realizo la selección del registro mediante ese campo, creo q no pero... influye en algo? ad+ d en la velocidad al localizar el registro supongo...

al crear este procedimiento sera más rapido q realizando todos estos pasos mediante un lenguaje de programacion espero

se me olvidaba decirte... feliz año
__________________
MainMind.com
La blasfemia es el único lenguaje que de verdad conocen todos los programadores
  #9 (permalink)  
Antiguo 07/01/2004, 13:21
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
El utilizar la clave primaria es solo para que copies y borres el mismo resgistro.

La velocidad en teoría será mejor, eso tendrás que comprobarlo con el uso.


Feliz Año a tí también

(P.D.: no quiero que suene extraño , que solo se ponga "q" en vez de "que", bueno, pero utilizar muchas abreviaturas convierten un mensaje en difícil de leer, y mucho más de entender, agradecería no se usaran abreviaturas y no va solo por ti, un mensaje con muchas abreviaturas sacadas de los mensajes de los móviles cuestan entenderlos, y acabo por no leerlos.

Aquí hay espacio para escribir usémoslo)

Un saludo
  #10 (permalink)  
Antiguo 07/01/2004, 13:28
Avatar de sanfermin  
Fecha de Ingreso: diciembre-2001
Mensajes: 601
Antigüedad: 22 años, 4 meses
Puntos: 2
Gracias, ahora estoy en ello y ya he contruido un procedimiento que parece se amolda a mis necesitades. como llamo con un parametro a ese procedimiento desde ASP?

Intentaré no usar abreviaturas pero la costumbre... ;)

salu2
__________________
MainMind.com
La blasfemia es el único lenguaje que de verdad conocen todos los programadores
  #11 (permalink)  
Antiguo 07/01/2004, 13:35
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Puedes llamarlo como si se tratara de un recordset cualquiera anteponiendo EXEC al nombre del procedimiento y luego el parámetro, si es un texto ponlo entre comillas, la otra opción es utilizar un adocommand


Set Conn = Server.CreateObject( "ADODB.Connection" )
Conn.open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=USERBD;Initial Catalog=BD;Data Source=SERVIDORBD

Set Cmd = Server.CreateObject("ADODB.Command")
Set Cmd.ActiveConnection = Conn

Conn.BeginTrans
Cmd.CommandText = "NombreProcedimiento"
Cmd.CommandType = adCmdStoredProc
Cmd.Parameters.Append Cmd.CreateParameter("Nombreparámetro", adVarChar, adParamInput, 12, Valor)
Cmd.Execute()



Y listo
  #12 (permalink)  
Antiguo 07/01/2004, 13:36
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Bueno, falta el Conn.Committrans

y gestionar los posibles errores
  #13 (permalink)  
Antiguo 07/01/2004, 14:09
Avatar de sanfermin  
Fecha de Ingreso: diciembre-2001
Mensajes: 601
Antigüedad: 22 años, 4 meses
Puntos: 2
Como puedo gestionar los errores?? por ejemplo que el valor que le pase no devuelva ningun registro de la tabla??

SQL lo trato con soltura pero SQL Server es cosa nueva, alguna pagina donde pueda leer más sobre procedimientos??
__________________
MainMind.com
La blasfemia es el único lenguaje que de verdad conocen todos los programadores
  #14 (permalink)  
Antiguo 08/01/2004, 02:50
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
La ayuda de SQL Server viene bien para empezar, gestionar los errores, aparte del que no se cumpla la condición, desde la propia página ASP
  #15 (permalink)  
Antiguo 08/01/2004, 09:49
Avatar de sanfermin  
Fecha de Ingreso: diciembre-2001
Mensajes: 601
Antigüedad: 22 años, 4 meses
Puntos: 2
Gracias por todo Teri :)
__________________
MainMind.com
La blasfemia es el único lenguaje que de verdad conocen todos los programadores
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:13.