• Viernes 15 de Noviembre de 2024, 05:09

Autor Tema:  Ayuda Con Procedimiento De Almacenado  (Leído 2005 veces)

necros10

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Ayuda Con Procedimiento De Almacenado
« en: Jueves 7 de Junio de 2007, 06:48 »
0
tengo la sgte duda quiero actualizar una tabla x y q esta tabla optenga un valor "5000" por ejemplo

pero en el P.A quier q me haga calculos con esta tabla con valores actualizados ya no quiero ir dropiando y crando el procedimiento

set @dcto_afp=dcto_afp

asi lo tengo y esta malo comoo podria ser?

Atte El unico Necros

PD: estoy actualizando tablas en cascada hacia arriba el update general lo tengo listo solo topo en la actualizacion de registros

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Ayuda Con Procedimiento De Almacenado
« Respuesta #1 en: Jueves 7 de Junio de 2007, 08:58 »
0
:unsure:  :blink:


Disculpa pero podias explicarte mejor?
un ejemplo mas claro





Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

necros10

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Ayuda Con Procedimiento De Almacenado
« Respuesta #2 en: Jueves 7 de Junio de 2007, 16:49 »
0
intento deactualizar la tabla

update Descuento set anticipo=7000,dcto_afp=10000,dcto_isapre=5000 where codigo_dcto =201

en el procedimiento

set @anticipo=(anticipo)
actulizo en el procedimiento

update calsueldo set total_dcto=@total_dcto where codigo_dcto =@codigo_dcto

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Ayuda Con Procedimiento De Almacenado
« Respuesta #3 en: Jueves 7 de Junio de 2007, 16:55 »
0
Cual es tu pregunta en especifico que queres que haga el SP.... ???? una actualizacion a otra tabla ?

 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



necros10

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Ayuda Con Procedimiento De Almacenado
« Respuesta #4 en: Jueves 7 de Junio de 2007, 17:29 »
0
eso lo hace pero necesito hacer actualizaciones a registros sin modificar el procedimiento , es decir, que el nombre de la tabla intentar de ocuparlo como variable en el procedimiento para q asi pueda ejecutarlo sin problemas y actualizar las tablas tambien

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Ayuda Con Procedimiento De Almacenado
« Respuesta #5 en: Jueves 7 de Junio de 2007, 17:44 »
0
:blink:

Bueno sigo sin entender ..... xp no quieres modificar el SP ? porque una forma seria que tu SP reciba el nombre de la tabla que quieres modificar y ya ... pero como dices que no queries modificar el SP  :blink: ... no se de que otra forma lo podrias trabajar..

O bien si son varias tablas lo que podrias hacer es recuperar el nombre de las tablas ya sean que esten en un tabla xxx que contengan los nombre de las tablas o bien desde la sysobjects .. luego haces un cursos que vaya recorriendo cada una de las tablas y que por cada una te va haciendo la actualizacion  <_<  umm aunque si queres hacer eso es porque tus campos son los mismos y solo varia el enombre ???? pero bueno eso seria otra opcion pero de igual forma tendras que modificar el SP  :kicking:

 :ph34r:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



necros10

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Ayuda Con Procedimiento De Almacenado
« Respuesta #6 en: Jueves 7 de Junio de 2007, 17:55 »
0
create database ejerjuevest31
use ejerjuevest31

create table Descuento(
   codigo_dcto  numeric constraint pkdescuento primary key(codigo_dcto ),
   anticipo numeric,
   dcto_afp numeric,
   dcto_isapre numeric

);

create table Haber(
   cod_haberes numeric constraint pkhaberes primary key(cod_haberes),
   pago_h_ext numeric,
   bono numeric,
   gratifi numeric,
   aguinaldo numeric
);
create table DatosP(
   rut char(12) constraint pkdatosp primary key(rut),
   nombre varchar(50),
   direccion varchar(50),
   nombre_afp varchar(30),
   nom_isapre varchar(30),
   fono numeric,
   edad numeric,
   sliquido numeric
);
create table calsueldo(
   cod_trab numeric constraint pkcalsueldo primary key(cod_trab),
   rut char(12) constraint fkdatosp foreign key references DatosP(rut),   
   codigo_dcto numeric constraint fkdescuento foreign key references Descuento(codigo_dcto ),
   total_dcto numeric,
   cod_haberes numeric constraint fkhaber foreign key references Haber(cod_haberes),
   total_haber numeric
);
drop table calsueldo



insert into datosP values('11.111.111-1','Juan Perez','alameda 42','Habitad','Banmedica',111222,30,NULL);

insert into haber values(101,null,30000,15000,50000);

insert into descuento values(201,30000,15000,11000);

insert into calsueldo values(301,'11.111.111-1',201,null,101,null);

- actualize 2 registros de la tabla descuento y quequee el campo 'Total_dto' en la tabla calsueldo( se debe actualizar )
*/
update Descuento set anticipo=5000,dcto_afp=10000,dcto_isapre=5000 where codigo_dcto =201
update descuento set anticipo=8000,dcto_afp=15000,dcto_isapre=5000 where codigo_dcto =202


create procedure CalDescuento
@codigo_dcto numeric
as
declare @total_dcto numeric
declare @anticipo numeric
declare @dcto_afp numeric
declare @dcto_isapre numeric
select @anticipo = (anticipo),@dcto_afp=(dcto_afp),@dcto_isapre=(dcto_isapre) from descuento where @codigo_dcto =codigo_dcto
select @total_dcto=(total_dcto) from calsueldo where @codigo_dcto =codigo_dcto

/* reparar*/
set @anticipo=(anticipo)
set @dcto_afp=(dcto_afp)
set @dcto_isapre=(dcto_isapre)
set @total_dcto = (@dcto_isapre+@dcto_afp)+@anticipo

update calsueldo set total_dcto=@total_dcto where codigo_dcto =@codigo_dcto
select * from calsueldo where  codigo_dcto =@codigo_dcto

execute CalDescuento 201

eso es y tengo q ir actualizando en cascada