Mise à jour simple
Les mises à jours (UPDATE, INSERT, DELETE) ou ordre du langage de définition de données (CREATE, ALTER, DROP, GRANT,…) sont les plus simples puisque ne nécessitent même pas forcément de variables.
Il suffira de mettre le code SQL au sein du bloc en le COMMITant si nécessaire.
BEGIN
INSERT INTO emp(empno, ename) VALUES (1111,’Deleglise’);
COMMIT;
CREATE TABLE test (n INTEGER);
END;
rappelons que les ordres du LDD sont auto COMMITés.
De plus les ordres du LDD ne sont supportés de manière aussi simple que dans les versions récentes d’Oracle. Auparavant il fallait utiliser des packages spéciaux fournis avec le logiciel pour les exécuter.
Select simple (monoligne sans curseur)
Dans la syntaxe normale d’un SELECT en SQL on rajoute une clause ‘INTO’ avant la clause ‘FROM’ en précisant une (ou des) variable(s) de réception :
SQL> SELECT col1, col2,… INTO var_recep1, var_recep2 FROM ma_table
les variables doivent bien sur être déclarées. Voici un exemple
DECLARE
salaire emp.SAL%TYPE;
nom emp.ename%TYPE;
BEGIN
SELECT ename, sal INTO nom,salaire FROM EMP
WHERE empno=7902;
END;
la clause WHERE est très importante ici et on doit s’assurer qu’elle ramène bien exactement 1 ligne. Sinon on obtient une erreur :
« ORA-01422″: exact fetch returns more than requested number of rows » si il ya trop de lignes
« ORA-01403 »: no data found , si le SELECT ne ramène aucune ligne
Ordres SQL simples avec paramètres d’entrée
LEs ordres SQL précédents peuvent être paramétrés, ce qui dans la pratique ets un peu plus utile. Il suffit de déclarer la variable et de la faire apparaitre dans l’ordre SQL sans délimiteur particulier.
DECLARE
salaire emp.SAL%TYPE;
nom emp.ename%TYPE;
PROCEDURE lit_emp ( no IN INTEGER)
IS
BEGIN
SELECT ename, sal INTO nom,salaire FROM EMP
WHERE empno = no;
END lit_emp;
BEGIN
lit_emp(7902);
DBMS_OUTPUT.PUT_LINE(‘nom : ‘||nom|| ‘ salaire : ‘ || salaire);
END;


