Dans cet exemple sont illustrés les emplois des différents types de variable suivants :
- variable de substitution (define) - interprétée par SqlPlus
- bind variable (variable) - SQL - PL/SQL
- variable de programme (declare) - PL/SQL
- variable de programme (declare) - PL/SQL
Ces variables sont utilisées pour des raisons bien spécifiques, et ne doivent en aucun cas être confondues...
Exemple
SQL> SET VERIFY OFF
SQL> DEFINE matable=dba_users;
SQL> VARIABLE b NUMBER;
SQL> DECLARE
2 res VARCHAR2(30);
3
4 BEGIN
5 :b :=0;
6 SELECT username INTO res FROM &matable WHERE user_id=:b;
7 dbms_output.put_line('USER IS : '||res);
8 END;
9 /
USER IS : SYS
PL/SQL procedure successfully completed.
SQL> DEFINE matable=dba_users;
SQL> VARIABLE b NUMBER;
SQL> DECLARE
2 res VARCHAR2(30);
3
4 BEGIN
5 :b :=0;
6 SELECT username INTO res FROM &matable WHERE user_id=:b;
7 dbms_output.put_line('USER IS : '||res);
8 END;
9 /
USER IS : SYS
PL/SQL procedure successfully completed.
Autre exemple pour une bind variable en SQL pur
SQL> VARIABLE b NUMBER;
SQL> EXECUTE :b:=0;
PL/SQL procedure successfully completed.
SQL> SELECT username
2 FROM all_users
3 WHERE user_id = :b;
USERNAME
------------------------------
SYS
SQL> EXECUTE :b:=0;
PL/SQL procedure successfully completed.
SQL> SELECT username
2 FROM all_users
3 WHERE user_id = :b;
USERNAME
------------------------------
SYS
Aucun commentaire:
Enregistrer un commentaire