111 votes

Comment utiliser des variables dans Oracle SQL Developer?

Vous trouverez ci-dessous un exemple d'utilisation de variables dans SQL Server 2000.

 DECLARE @EmpIDVar INT

SET @EmpIDVar = 1234

SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDVar
 

Je veux faire exactement la même chose dans Oracle en utilisant SQL Developer sans complexité supplémentaire. Cela semble être une chose très simple à faire, mais je ne trouve pas de solution simple. Comment puis-je le faire?

89voto

Omphaloskopie Points 645

J'utilise SQL-Developer dans la version 3.2. Les autres trucs n'ont pas fonctionné pour moi, mais cela a fonctionné:

 define value1 = 'sysdate'

SELECT &&value1 from dual;
 

En outre, c'est la manière la plus simple présentée ici, pour le moment.

(Si vous omettez la partie "define", cette valeur vous sera demandée)

71voto

gavenkoa Points 6974

Il existe deux types de variable dans SQL-plus: la substitution et la lier.

C'est la substitution (substitution de variables peut remplacer SQL*Plus d'options de commande ou d'autres codée en dur de texte):

define a = 1;
select &a from dual;
undefine a;

C'est bind (bind variables de stocker des valeurs de données pour SQL et PL/SQL exécutées dans les SGBDR; ils peuvent contenir des valeurs uniques ou de compléter des ensembles de résultats):

var x number;
exec :x := 10;
select :x from dual;
exec select count(*) into :x from dual;
exec print x;

SQL Developer prend en charge les variables de substitution, mais lorsque vous exécutez une requête avec bind :var de la syntaxe, vous êtes invité pour la liaison (dans une boîte de dialogue).

Référence:

49voto

Justin Cave Points 114578

En SQL * Plus, vous pouvez faire quelque chose de très similaire

 SQL> variable v_emp_id number;
SQL> select 1234 into :v_emp_id from dual;

      1234
----------
      1234

SQL> select *
  2    from emp
  3   where empno = :v_emp_id;

no rows selected
 

Dans SQL Developer, si vous exécutez une instruction comportant un nombre quelconque de variables de liaison (précédée de deux points), vous serez invité à entrer des valeurs. Comme Alex le fait remarquer, vous pouvez également faire quelque chose de similaire en utilisant la fonction "Exécuter le script" (F5) avec la syntaxe de remplacement EXEC suggérée par Alex.

 variable v_count number;
variable v_emp_id number;
exec :v_emp_id := 1234;
exec select count(1) into :v_count from emp;
select *
  from emp
 where empno = :v_emp_id
exec print :v_count;
 

12voto

Chandu Points 40028

Réponse simple NON.

Cependant, vous pouvez obtenir quelque chose de similaire en exécutant la version suivante à l'aide de variables de liaison:

 SELECT * FROM Employees WHERE EmployeeID = :EmpIDVar 
 

Une fois que vous avez exécuté la requête ci-dessus dans SQL Developer, vous serez invité à entrer une valeur pour la variable de liaison EmployeeID.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X