J'ai une requête comme
SELECT id FROM xyz WHERE ...;
qui a une clause WHERE plus ou moins complexe et renvoie exactement une ligne avec une colonne (ID). J'ai besoin de cet ID pour plusieurs requêtes ultérieures dans un script. Mon objectif était donc de réutiliser ce résultat dans une variable mais je ne parviens pas à une solution qui fonctionne.
Rejoindre cette requête ne serait pas une bonne option dans ce cas. Est-il donc possible de dire à Oracle de stocker ce résultat unique dans une variable et d'utiliser cette variable pour créer de nouvelles requêtes - à utiliser explicitement dans la clause conditionnelle d'autres requêtes?
Si oui, quelqu'un pourrait peut-être publier un exemple simple - le plus simple serait peut-être qch. comme
SELECT :VARIABLE FROM DUAL
Pour Toad, de this réponse sur SO:
Je pense que cela accomplira ce que vous voulez. Vous pouvez déclarer une variable de liaison, y insérer une valeur, puis l'utiliser dans de futures instructions.
variable l_var varchar2(1); begin select dummy into :l_var from dual; end; select * from dual where dummy = :l_var;
Cela fait une différence ... SQL * Plus peut utiliser des variables, mais elles sont une fonctionnalité SQL * Plus et vous pouvez simplement saisir ce bloc de code et le transmettre à un backend Oracle pour l'exécuter (comme vous le pourriez avec un bloc Transact SQL par exemple).
Vous pouvez choisir entre l'utilisation de variables de liaison dans SQL * Plus comme suit: http://www.adp-gmbh.ch/ora/sqlplus/use_vars.html
Ou utilisez les propres variables de SQL * Plus avec les commandes DEFINE et COLUMN: http://www.adp-gmbh.ch/ora/sqlplus/new_value.html
Si vous avez vraiment besoin que le code soit exécutable dans d'autres environnements, vous devrez probablement emprunter la route PL/SQL.