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
| ||||
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 |
| ||||
Alguna idea?
__________________ MainMind.com La blasfemia es el único lenguaje que de verdad conocen todos los programadores |
| ||||
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 |
| |||
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 |
| ||||
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 |
| |||
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 |
| ||||
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 |
| |||
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 |
| ||||
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 |
| |||
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 |
| ||||
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 |
| ||||
Gracias por todo Teri :)
__________________ MainMind.com La blasfemia es el único lenguaje que de verdad conocen todos los programadores |