Procedure Stockée PL/SQL [Résolu/Fermé]

Signaler
-
 Mambo5 -
Bonjour,
Je dois créer une procédure PL/SQL permettant de copier les données de civil.personne vers institut.etudiant.
Cette procédure prend en paramètre (date_appel, file_name)

En fait j'ai essayé quelques codes, entre autres:

CREATE or replace PROCEDURE copie_infos
BEGIN
INSERT INTO etudiant (
    SELECT date-appel, file name 
    FROM personne);
END;

/
mais cela ne marche pas parce qu'il s'agit de deux tables différentes

Aidez moi s'il vous plait

1 réponse

Bonjour,

Avec cette procédure, tu vas pouvoir insérer la table 1 dans la table 2 normalement. Tu as juste à modifier tous les noms de tes tables et attributs.

CREATE PROCEDURE nom_de_la_procédure
BEGIN 
INSERT INTO table1 ( attribut1, attribut2, ...)
SELECT attribut1, attribut2, ... FROM table2
END


J'espère que ça marchera, mais pour ma part c'est OK ;)
ORA-00001: violation de contrainte unique

De toute évidence le message te précise bien qu'il y a une clé non unique dans ta table institut. Vu que tu veux insérer dans la table institut, ça voudrait dire qu'il y a une clé en double sur la table civil.personne

Pour vérifier utilise cette requête et tu verra tout de suite si tu as des doublons
SELECT COUNT(*), login
FROM  civil.personne
GROUP BY login
HAVING COUNT(*) > 1


ça va te donner le nombre de doublons que tu as.
Dans ta table civil.personne quelle est la clé primaire ou les clés primaire ?
J'ai effectué des recherches grâce auxquels je me suis rendu compte qu'il fallait qu'un DBLinK relie les deux bases entre elles pour pouvoir exécuter la procédure.
Y a t'il un moyen de connaitre le nom de ce link (sachant que j'ai des grant limités)???
Je ne connais pas Oracle mais voilà un petit coup de pouce. En tout cas sur SQL server 2008 R2, je n'ai pas eu besoin de DB_Link pour réussir la procédure que je t'ai envoyer.
Bon courage quand même

http://oracle.developpez.com/telecharger/detail/id/2504/Liste-de-tous-les-DB-LINK-de-la-base
Merci beaucoup pour ton aide Mambo5
J'ai tapé le code que tu m'a envoyé et effectivement il y avait un problème de doublons donc j'ai effacé la PK et j'ai rempli ma table.
enfin de compte voici mon code final:

CREATE OR REPLACE procedure copie_infos IS
begin
EXECUTE IMMEDIATE 'TRUNCATE TABLE exemple';
INSERT INTO exemple (id, file_name, date_appel)
SELECT identifiant, mail, naissance
FROM civil.personne;
commit;
end;
execute copie_infos
Encore une dernière chose: est-il possible d'avoir un suivi sur les bug et les erreurs???
Cool que tu es réussi ta procédure.
Pour le suivi des logs d'erreur, regarde du coté du "journal de transaction" et du user SYS (super admin).
Je ne peux pas plus t'aider, mes compétences s'arrête ici. Tout ce qui est gestion des logs se fait automatiquement avec l'outils SSIS sous Visual Studio.

Bon courage pour la suite