samedi 17 juillet 2010

Utilisation de 'EXECUTE IMMEDIATE'.

Il est possible qu'on paramètre la création d'une table dans un bloc PL/SQL en utilisant la commande SQL Dynamique EXECUTE IMMEDIATE.

CREATE OR REPLACE PROCEDURE TESTSTRING (String IN Varchar2) AS
Begin
EXECUTE IMMEDIATE String;
end;

On va compiler la procédure et l'exécuter comme suit:

EXEC TESTSTRING(' CREATE TABLE TEST(ID NUMBER, NOM VARCHAR2(30))');

On peut utiliser de la même façon pour supprimer une ou plusieurs lignes. Voici le code:

create or replace procedure EFFACER_ENREG
(Table_Nom in VARCHAR2,
Condition IN VARCHAR2 default NULL)
AS
Clause_Where VARCHAR2(100) := ' WHERE ' || Condition;
Begin
-- Si aucune condition donnée au paramètre, il renvoie la valeur NULL
-- Et il va supprimer tous les enregistrements de la table

IF Condition is NULL then Clause_Where := NULL;
END IF;
EXECUTE IMMEDIATE ' DELETE FROM ' || Table_Nom || Clause_Where;
end;

Pour l'exécuter sans paramètre de condition:
EXEC EFFACER_ENREG('TEST');

Avec un paramètre (une fois que la table soit remplie avec des INSERT INTO):
EXEC EFFACER_ENREG('TEST','ID=1');

Abed

mardi 13 juillet 2010

Certifications ORACLE (OCP).

OCP(Oracle Certified Professional) est une liste des certifications d'ORACLE classées par des catégories, à savoir:

  • Oracle Database Administrator (DBA)
  • Oracle Application Developer (Forms, SQL, PL/SQL).
  • Oracle Database Operator
  • Oracle Java Developer
  • Oracle Financial Applications Consultant
Le plus important est celui de DBA et Developer.
Voici la liste de quelques examens proposés par Oracle:

1Z0-001, 1Z0-047, 1Z0-147, etc....

Pour plus de détails concernant toutes les certifications, démo, etc,.... visitez cette adresse:
http://www.ucertify.com/vendors/Oracle.html

Abed

lundi 12 juillet 2010

Dates en ORACLE.

J'ai constaté que la plupart des schémas d'Oracle ont été crées avec un format date AMERCIAN. Parfois, on trouve des difficultés pour faire des INSERT dans une table avec le format suivant (12-FEB-03). Pour remédier à ce problème, voici les étapes:

  • Vérifier les paramètres de la session (NLS) avec la syntaxe: SELECT * FROM NLS_SESSION_PARAMETERS;
  • Faites la syntaxe suivante:
  • ALTER SESSION SET NLS_LANGUAGE = AMERICAN;
  • Exécuter cette commande:
SELECT VALUE From NLS_SESSION_PARAMETERS
WHERE PARAMETER='NLS_DATE_FORMAT';
  • Si le format de la date est incorrect, on peut le changer avec la syntaxe ALTER SESSION SET NLS_DATE_FORMAT='DD-MM-YYYY';
  • À ce moment là, on pourrait faire des INSERT dans une table sans problème.

Processus d'écoute d'ORACLE.

Parfois, il se pourrait qu'on va y avoir une erreur de processus d'écoute (le système ne pourra pas se connecter comme la montre cette figure):



Pour résoudre ce problème, il suffit de redémarrer le service de Listener. Voici les étapes:
  • Aller dans panneau de configuration - outils d'administration - services
  • Chercher OracleOradb10g_Home1TNSListener
  • Cliquer à gauche sur redémarrer le service
  • Fermer la fenêtre Outils d'administration
  • Relancer PL/SQL Developer, TOAD ou SQL Plus
  • Connecter avec le compte et ça devrait marcher.

vendredi 9 juillet 2010

Raccourcis pour Forms et Reports Builder.

Il est possible qu'on peut mettre un raccourci sur le bureau de windows pour le lancement rapide d'Oracle Forms Builder 10g, dont voici les démarches.

  • Créer un fichier texte et nommer le Forms.bat
  • Saisir les paramètres suivants:
SET FORMS_PATH=C:\DevSuiteHome_1\cgenf61\admin,C:\DevSuiteHome_1\Forms
C:\DevSuiteHome_1\BIN\Frmbld.exe
  • Sauvegarder le fichier.
  • Lancer Forms en cliquant deux fois sur l'icône.
On fait la même chose pour Oracle Reports en créant un fichier nommé Reports.bat

SET REPORTS_PATH=C:\DevSuiteHome_1\cgenf61\admin,C:\DevSuiteHome_1\Forms
C:\DevSuiteHome_1\BIN\rwbuilder.exe

Abed

jeudi 8 juillet 2010

Personnaliser les alertes avec Oracle Forms 10g.

Lorsqu'on va utiliser un bout de code plusieurs fois au niveau d'un module (cas des alertes par exemple), il est beaucoup plus utile de créer une unité de programme. Dans notre cas des alertes, on va créer une fonction et puis de faire appel à l'unité de programme.

  1. Création de l'unité de programme
Se positionner sur le nœud unité de programme:



Cliquer sur Ajout ou (+) en haut du module. Sélectionner Fonction et donner un nom (exemple Afficher_alerte)



Une fenêtre PL/SQL s'affiche à l'écran et on va saisir ce code (cliquez sur l'image pour voir le contenu):



Maintenant la fonction AFFICHER_ALERTE est crée. Donc, on va l'appeler à partir d'un trigger (When-Button-Pressed) en créant un bouton sur un canevas. Il nous reste qu'a saisir le code pour appeler la fonction qui affiche le message de type alerte (sans oublier bien sûr de créer un objet ALERT, sinon le programme ne le trouve pas).



Après la compilation du module, voici les résultats (cas d'un objet ALERT existant)



Cas d'un objet ALERT inexistant au niveau du module.



Testé sous Windows 7, Oracle 10gR2. Le code source (FMB) serait téléchargeable incessamment sur mon site web.
Abed