SoloCodigo
Bases de Datos => SQL Server => Mensaje iniciado por: necros10 en Jueves 7 de Junio de 2007, 06:48
-
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
-
:unsure: :blink:
Disculpa pero podias explicarte mejor?
un ejemplo mas claro
Saludos
-
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
-
Cual es tu pregunta en especifico que queres que haga el SP.... ???? una actualizacion a otra tabla ?
:comp:
-
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
-
: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:
-
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