|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2001
Città: Roma Caput Trafficus Sesso: Maschile
Messaggi: 9146
|
[Oracle-PL/SQL] Trigger: esistono i recordset?
Salve a todos,
avrei bisogno di aiuto. Praticamente devo creare un trigger in Oracle (8i) che, in base ad una SELECT, potrebbe restituire "n" righe. Devo poi scorrere questi valori e in base al contenuto di un campo devo fare o meno un'INSERT. Per l'ultima parte no problem, il problema invece è che non so se esistono una specie di oggetti Recordset in Oracle. Come faccio poi a scorrere tra i valori? Avevo pensato anche a creare una vista o tabella temporanea, scrivere lì i valori risultanti dalla SELECT e poi alla fine cancellarla, ma mi sembra uno spreco di risorse. Grazie
__________________
* Vendo Nintendo Switch 1.1 * Case Sliger SM580 | CPU AMD Ryzen 5900X | Mobo Gigabyte B550I Aorus PRO | VGA Nvidia RTX 4080 Super FE | RAM 32GB G.Skill DDR4 3600MHz CL16 | SDD Sabrent 1TB PCIe 4.0 | PSU Corsair SFX SF750 Ultima modifica di Quincy_it : 05-04-2004 alle 15:23. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
non potresti creare una procedura e definire un cursore? se hai una chiave primaria la cosa non dovrebbe essere difficile...
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2001
Città: Roma Caput Trafficus Sesso: Maschile
Messaggi: 9146
|
Quote:
__________________
* Vendo Nintendo Switch 1.1 * Case Sliger SM580 | CPU AMD Ryzen 5900X | Mobo Gigabyte B550I Aorus PRO | VGA Nvidia RTX 4080 Super FE | RAM 32GB G.Skill DDR4 3600MHz CL16 | SDD Sabrent 1TB PCIe 4.0 | PSU Corsair SFX SF750 |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
fammi capire meglio... i dati da inserire sono in 2 tabelle differenti con alcuni campi comuni? questi campi comuni hanno una chiave univoca? (ovvero una colonna o una combinazione di + colonne i cui valori NON POSSONO essere duplicati)
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2001
Città: Roma Caput Trafficus Sesso: Maschile
Messaggi: 9146
|
Allora:
devo controllare tramite una SELECT il valore di un campo da una tabella A. Ma da questa QUERY possono venire fuori 0, 1 o "n" record. La QUERY sulla tabella A prende in considerazione vari campi, tra cui la PK di quella tabella (ma non è nella condizione WHERE). Nel caso poi che vengano fuori "n" record, devo controllare quante volte compare un determinato valore sullo stesso campo in tutto il "recordset". A seconda di questo dovrò fare (o meno)un'INSERT in un'altra tabella B. E' più chiaro così?
__________________
* Vendo Nintendo Switch 1.1 * Case Sliger SM580 | CPU AMD Ryzen 5900X | Mobo Gigabyte B550I Aorus PRO | VGA Nvidia RTX 4080 Super FE | RAM 32GB G.Skill DDR4 3600MHz CL16 | SDD Sabrent 1TB PCIe 4.0 | PSU Corsair SFX SF750 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
si è decisamente più chiaro adesso... ti ho consigliato una soluzione non ottimale con un cursore, sarebbe un po' complesso specie se non hai molta mano.
purtroppo sui trigger non so aiutarti, dato che per "politica" aziendale non li usiamo (già li usavo poco prima, adesso 0 proprio, mi dispiace...) ma se fai una select count del campo, assegni il valore ad una variabile e fai eseguire una insert se questo valore è maggiore di un valore dato o del valore della tabella di destinazione? in questo caso potresti definire le 2 variabili con una select count <testoquery> into <nomevariabile1>, farlo sulla seconda tabella, e usare l'istruzione case -- when quando non hai l'uniformità sulle 2 variabili... non so se possa esserti d'aiuto
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2001
Città: Roma Caput Trafficus Sesso: Maschile
Messaggi: 9146
|
Alla fine ho scoperto il "magico mondo dei cursori", e tra un IF e l'altro dovrei essere riuscito a fare qualcosa.
Grazie tante!
__________________
* Vendo Nintendo Switch 1.1 * Case Sliger SM580 | CPU AMD Ryzen 5900X | Mobo Gigabyte B550I Aorus PRO | VGA Nvidia RTX 4080 Super FE | RAM 32GB G.Skill DDR4 3600MHz CL16 | SDD Sabrent 1TB PCIe 4.0 | PSU Corsair SFX SF750 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
di nulla!
in effetti sono abbastanza pratici...
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:44.


















