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
|