Comment extraire une donnée d'une table avec l'attribut %TYPE ou %ROWTYPE PL-SQL ?
Toute donnée extraite d'une table est réceptionnée dans une variable.
%TYPE et %ROWTYPE sont utilisés pour définir des variables en PL / SQL tel qu'ils sont définis dans la base de données. Si le type de données ou
de précision d'une colonne change, le programme choisit automatiquement la nouvelle définition de la base de données sans avoir à faire aucune modification de code.
● assurent l'indépendance des données.
● réduit les coûts de maintenance.
● permet aux programmes de s'adapter aux changements de la base de données.
SET SERVEROUTPUT ON
DECLARE
v_ename scott.emp.ename%type;
v_job scott.emp.job%type;
BEGIN
SELECT ename, job
INTO v_ename, v_job
FROM scott.emp
WHERE empno = 7839;
dbms_output.put_line('Name = '||v_ename || ' Job = ' || v_job);
END; /
|
Dans la partie DECLARE, nous déclarons les deux variables v_ename et v_job référencées à une colonne de table de la base et qui receptionnerons les données. Ici colonne ENAME et
JOB de la table EMP du schéma SCOTT.
L'attribut %TYPE spécifie le type de la colonne de la table.
SQL> SET SERVEROUTPUT ON SQL> DECLARE 2 v_ename scott.emp.ename%type; 3 v_job scott.emp.job%type; 4 BEGIN 5 SELECT ename, job 6 INTO v_ename, v_job 7 FROM scott.emp 8 WHERE empno = 7839; 9 dbms_output.put_line('Name = '||v_ename || ' Job = ' || v_job); 10 END; 11 / Name = KING Job = PRESIDENT PL/SQL procedure successfully completed. |
SET SERVEROUTPUT ON
DECLARE
v_emp scott.emp%rowtype;
BEGIN
SELECT ename, job
INTO v_emp.ename, v_emp.job
FROM scott.emp
WHERE empno = 7839;
dbms_output.put_line('Name = '||v_emp.ename || ' Job = ' || v_emp.job);
END; /
|
Dans la partie DECLARE, nous déclarons la variable v_emp qui fait référence à un enregistrement (ligne) de table de la base. Ici toutes les colonnes de la table EMP du schéma
SCOTT.
L'attribut %ROWTYPE spécifie la structure d'une ligne de table.
SQL> SET SERVEROUTPUT ON SQL> DECLARE 2 v_emp scott.emp%rowtype; 3 BEGIN 4 SELECT ename, job 5 INTO v_emp.ename, v_emp.job 6 FROM scott.emp 7 WHERE empno = 7839; 8 dbms_output.put_line('Name = '||v_emp.ename || ' Job = ' || v_emp.job); 9 END; 10 / Name = KING Job = PRESIDENT PL/SQL procedure successfully completed. |
| Liens en rapport avec l'article et qui sont susceptibles de vous intéresser |
|
• Oracle PL-SQL Structure d'un BLOC • Oracle PL-SQL SELECT INTO |