Insertion de références par OID (INSERT)
Pour faire une référence avec un OID, il est nécessaire de récupérer l'OID correspondant à l'enregistrement que l'on veut référencer.
L'OID est accessible grâce à la syntaxe REF en SQL3.
Syntaxe : REF
Appuyer sur espace pour rester en pause.
Syntaxe : Insertion de données en SQL
Appuyer sur espace pour rester en pause.
CTRL+C pour copier, CTRL+V pour coller
1
INSERT INTO table1 (champs1, ..., clé_étrangère)
2
SELECT 'valeur1', ..., REF(alias)
3
FROM table2 alias
4
WHERE clé_table2='valeur';
INSERT INTO table1 (champs1, ..., clé_étrangère) SELECT 'valeur1', ..., REF(alias) FROM table2 alias WHERE clé_table2='valeur';
Syntaxe : Insertion de données en PL/SQL
Appuyer sur espace pour rester en pause.
CTRL+C pour copier, CTRL+V pour coller
1
DECLARE
2
variable REF type_objet;
3
BEGIN
4
SELECT REF(alias) INTO variable
5
FROM table2 alias
6
WHERE clé_table2='valeur';
7
8
INSERT INTO tCours (champs1, ..., clé_étrangère)
9
VALUES ('valeur1', ..., variable);
10
END;
DECLARE variable REF type_objet; BEGIN SELECT REF(alias) INTO variable FROM table2 alias WHERE clé_table2='valeur'; INSERT INTO tCours (champs1, ..., clé_étrangère) VALUES ('valeur1', ..., variable); END;
Exemple :
Appuyer sur espace pour rester en pause.
CTRL+C pour copier, CTRL+V pour coller
1
DECLARE
2
refI REF typIntervenant;
3
BEGIN
4
INSERT INTO tIntervenant (pknom, prenom)
5
VALUES ('CROZAT', 'Stéphane');
6
7
SELECT REF(i) INTO refI
8
FROM tIntervenant i
9
WHERE pknom='CROZAT';
10
11
INSERT INTO tCours (pkannee, pknum, titre, type, debut, refintervenant)
12
VALUES ('2003', 1, 'Introduction','C', '01-JAN-2001', refI);
13
14
INSERT INTO tCours (pkannee, pknum, titre, type, debut, refintervenant)
15
VALUES ('2003', 2, 'Modélisation','TD', '02-JAN-2001', refI);
16
END;
17
/
DECLARE refI REF typIntervenant; BEGIN INSERT INTO tIntervenant (pknom, prenom) VALUES ('CROZAT', 'Stéphane'); SELECT REF(i) INTO refI FROM tIntervenant i WHERE pknom='CROZAT'; INSERT INTO tCours (pkannee, pknum, titre, type, debut, refintervenant) VALUES ('2003', 1, 'Introduction','C', '01-JAN-2001', refI); INSERT INTO tCours (pkannee, pknum, titre, type, debut, refintervenant) VALUES ('2003', 2, 'Modélisation','TD', '02-JAN-2001', refI); END; /