web-dev-qa-db-fra.com

Comment déclarer et utiliser des variables dans Oracle?

Mes principales compétences sont avec SQL Server, mais on m'a demandé de faire quelques réglages d'une requête Oracle. J'ai écrit le SQL suivant:

declare @startDate int
select @startDate = 20110501

Et je reçois cette erreur:

declare @startDate int
select @startDate = 20110501
Error at line 1
ORA-06550: line 1, column 9:
PLS-00103: Encountered the symbol "@" when expecting one of the following:

   begin function package pragma procedure subtype type use
   <an identifier> <a double-quoted delimited-identifier> form
   current cursor

Comment déclarer et utiliser des variables dans Oracle?

19
Mark Allison

Intérieur du bloc pl/sql:

declare
 startdate number;
begin
  select 20110501 into startdate from dual;
end;
/

en utilisant une variable de liaison:

var startdate number;
begin
  select 20110501 into :startdate from dual;
end;
/

Procédure PL/SQL terminée avec succès.

SQL> print startdate

 STARTDATE
----------
  20110501

dans une requête:

select object_name 
from user_objects 
where created > to_date (:startdate,'yyyymmdd');  /*prefix the bind variable wïth ":" */
18
ik_zelf

SQL * Plus prend en charge un format supplémentaire:

DEFINE StartDate = TO_DATE('2016-06-21');
DEFINE EndDate   = TO_DATE('2016-06-30');

SELECT
    *
FROM
    MyTable
WHERE
    DateField BETWEEN &StartDate and &EndDate;

Notez les esperluettes où les substitutions doivent être effectuées dans la requête.

3
Jon of All Trades