Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
Trigger pentru a face update automat la o tabela cand fac update la alta tabela
Last Updated: Apr 07 2017 23:05, Started by
lupulalbastru1
, Mar 17 2017 21:49
·
0
#1
Posted 17 March 2017 - 21:49
Salut!
Am o tabela angajati care contine date despre angajati (salariu, vechime, spor, impozit, cas, etc), si o tabela date_proc care contine datele procentuale pentru impozit, cas, sanatate si somaj. Am nevoie de un trigger care atunci cand se face un update in tabela date_proc sa imi calculeze anumit niste coloane din tablea angajati. Daca fac un update pe tabela date_proc, am urmatoarea eroare: ORA-01422: extract fetch returns more than requested number of rows ORA-06512: at "USER.CALCUL_SALARII", line13 ORA-04088: error during execution of trigger 'USER.CALCUL_SALARII' Tabela date_proc contine o singura linie Trigger-ul arata asa: https://docs.google.com/document/d/14-79L0rClWD9GRldh_nqDKSFa4IM5QptLDQZvk38yIU/edit Edited by lupulalbastru1, 17 March 2017 - 21:57. |
#3
Posted 18 March 2017 - 08:37
iti vine sa crezi ca e foarte important in ce SGBD lucrezi?
|
#4
Posted 18 March 2017 - 11:04
ORA din dreptul mesajelor de eroare imi indica c-o fi vorba de Oracle
|
#5
Posted 18 March 2017 - 13:02
asa tind sa cred si eu, vazand mesajele de eroare. dar intotdeauna ma uimeste cu "programatorii" nu dai nici macar asemenea informatii de baza.
legat strict de problema, tind sa cred ca are vreun "select into" care aduce mai mult de o linie de date. fie a gresit ceva, fie nu foloseste un cursor. codul "pus" de el nu poate fi accesat direct. |
#6
Posted 18 March 2017 - 17:00
Folosesc Oracle
Si in baza de date angajați, pe care dlfac select, am mai multe linii, deci problema e că trebuie sa folosesc un cursor |
#8
Posted 19 March 2017 - 08:59
In tabela pe care fac select si update am mai multe linii
|
#10
Posted 19 March 2017 - 10:37
hai ca nu-i chiar asa de greu de intuit problema
cel mai probabil face niste calcule individuale, folosind diverse variabile. intrucat modificarile din date_proc afecteaza multi angajati, are doua variante: -fie face un cursor si itereaza prin lista de angajati, aplicand algoritmul actual -fie modifica algoritmul astfel incat sa poata face calculele simultan pentru toti angajatii, fara sa mai foloseasca vreun cursor sau variabile SGBD-urile sunt optimizate pentru al doilea mod de lucru, dar multor programatori incepatori, obisnuiti cu programarea procedurala, le e mult mai usor sa implementeze un cursor. |
|
#11
Posted 19 March 2017 - 11:15
Eu de aia intrebam, sa vad codul, ca eu n-am avut niciodată nevoie de cursor si nici nu vad unde ai putea avea nevoie de asa ceva
|
#12
Posted 19 March 2017 - 11:17
Codul e in primul post, doar sa fi logat pe gmail inainte de a accesa linkul.
|
#13
Posted 19 March 2017 - 11:19
Plus de ceva timp nu mai incerc sa intuiesc ce vrea sa zica cineva, ori zice clar ori nu are sens sa-mi pierd timpul
Am încercat sa accesez linkul ala da nu a părut sa mearga si n-am insistat |
#14
Posted 19 March 2017 - 11:42
dani.user, on 19 martie 2017 - 11:17, said:
Codul e in primul post, doar sa fi logat pe gmail inainte de a accesa linkul. romio79, on 19 martie 2017 - 11:15, said:
Eu de aia intrebam, sa vad codul, ca eu n-am avut niciodată nevoie de cursor si nici nu vad unde ai putea avea nevoie de asa ceva uite un exemplu simplu: ai de importat niste date bulk tip master-detail, in tabele care au PK de tip identity. fara cursor nu prea poti mentine legatura dintre ele. legat de codul postat, poate fi inlocuit foarte usor cu un singur update care sa contina si calculele Edited by _Smiley_, 19 March 2017 - 11:42. |
#15
Posted 19 March 2017 - 12:19
Legat de importat date la exemplu tau e foarte usor si fara cursor, da fiecare cu modul lui de lucru, daca iti plac cursoarele go for it
|
|
#16
Posted 19 March 2017 - 12:43
Am incercat sa fac cursor dar am eroare: mutating, trigger/function may not see it- error during execution of trigger
Edited by lupulalbastru1, 19 March 2017 - 12:56. |
#17
Posted 19 March 2017 - 14:22
romio79, on 19 martie 2017 - 12:19, said:
Legat de importat date la exemplu tau e foarte usor si fara cursor, da fiecare cu modul lui de lucru, daca iti plac cursoarele go for it intr-adevar, din vorbe e foarte usor uite, sa zicem ca ai tabelele Master(MasterId<identity>, MasterValue<int>) si Detail(DetailId<int>, MasterId<int, fk>, DetailValue<int>) si ai 2 tabele temporare _Master si _Detail cu date ce trebuie importate (provenind din alta baza). cum importi tu datele astea cu un script, tinand seama ca ai mai multe inregistrari in fiecare tabel? @lupulalbastru1: nu te mai chiuni cu cursorul. pune valorile modificate in variabile, apoi fa singur update care sa faca toate calculele Edited by _Smiley_, 19 March 2017 - 14:23. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users