aggiorna tabella oracle
 
Script per aggiornare una tabella tramite i parametri
Script Aggiorna.sh per la creazione di nuove righe in un db copiando una determinata riga apportando la modifica in un campo passato come parametro :
es:
TABELLA < tab_contabilita_fam > del DATABASE < CASA > UTENTE < guido >
la tabella è così costituita:

 

GENERE COSTO QUANTITA DATA_ACQUISTO NUM_PROT
pane 3 euro 5 kg 20050929 1a
carne 5 euro 0,5 kg 20050930 2c
pesce 7 euro 0,8 kg 20051001 3p


lo script seleziona la prima riga e crea tante righe uguali con i num_prot passati da parametro, quindi lanciando:
Aggiorna.sh 1a 4a 5a 6b

Avremo aggiunto 3 righe al db che hanno tutti i campi uguali a quelli con NUM_PROT = 1 ma con NUM_PROT uguali a 4 5 6 quindi il DB si aggiornerà ne seguente modo:

 

GENERE COSTO QUANTITA DATA_ACQUISTO NUM_PROT
pane 3 euro 5 kg 20050929 1a
carne 5 euro 0,5 kg 20050930 2c
pesce 7 euro 0,8 kg 20051001 3p
pane 3 euro 5 kg 20050929 4a
pane 3 euro 5 kg 20050929 5a
pane 3 euro 5 kg 20050929 6b

Aggiorna.sh



#!/bin/ksh
#nome pacchetto: aggiorna_tabella.ksh
###########################################
# CONTROLLO DEI PARAMETRI DI INPUT #
###########################################
if [[ $# -lt 2 ]]
then
echo
echo "Usage : $0 <elemento esistente> <nuovo elemento> ... <ennesimo elemento>"
echo
echo "ESEMPIO 1: $0 num_prot_esistente new_ num_prot _1 new_ num_prot_2”
echo ""
exit
fi

##########################################
# FINE CONTROLLO DEI PARAMETRI DI INPUT #
##########################################
Nome_elemento_orig=$1;

shift
for arg in "$@"
do
sqlplus ******/*****@***** << EOF

-- nome_utente/password@nome_istanza
-- nel nostro caso guido/password@casa

set serveroutput on;
BEGIN
INSERT INTO tab_contabilità_fam
(
GENERE ,
COSTO ,
QUANTITA ,
DATA_ACQUISTO,
NUM_PROT
)
select
GENERE,
COSTO ,
QUANTITA ,
DATA_ACQUISTO ,
NUM_PROT('$arg')

from tab_contabilita_fam
where NUM_PROT ='$ Nome_elemento_orig '
and rownum < 2;
commit;

EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ( 'errore procedura'
SQLCODE
' '
SQLERRM);
ROLLBACK;
END;
/
EOF
done
exit 0
     

appunti italiani