Nom de la colonne en tant que variable en PL/SQL ORACLE
Je veux avoir un code où je voudrais déclarer un nom de colonne comme variable, puis utiliser cette variable pour récupérer colonne désirée à partir d'un certain tableau.
DECLARE
col_n VARCHAR (100) := 'X' ;
BEGIN
select col_n from my_table;
END;
Ce qui est le plus facile et explicite pour que dans Oracle?
De cette façon, pas possible. Vous devrez utiliser la requête dynamique.
Vous pouvez essayer d'exécuter immédiate, comme expliqué ici: stackoverflow.com/questions/4714163/...
Vous pouvez essayer d'exécuter immédiate, comme expliqué ici: stackoverflow.com/questions/4714163/...
OriginalL'auteur griboedov | 2014-08-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser sql dynamique pour exécuter une requête que vous construisez une chaîne de caractères.
Ce serait quelque chose le long de ces lignes:
no_data_found
outoo_many_rows
exceptionsdepuis il n'y a pas de "sélection dans" en cours, qui n'est pas correct.
Désolé, je ne savais pas que l', mais comment est-il possible de
select
sansinto
?le SELECT est exécutée, mais aucune valeur n'est renvoyée. L'alternative est de faire quelque chose comme
EXECUTE IMMEDIATE 'select ' || col_n || ' from my_table' INTO SOME_VARIABLE
, ouEXECUTE IMMEDIATE 'select ' || col_n || ' from my_table' BULK COLLECT INTO SOME_COLLECTION
. Partager et d'en profiter.Fait intéressant, je pensais qu'il était impossible de la requête, sans le
into
clauseOriginalL'auteur Klaus Byskov Pedersen
Vous pouvez utiliser le sql dynamique:
Le problèmes est que vous devez connaître pour assurer que le type de votre colonne.
En fait, il n'y a plus d'une façon de le faire, si vous utilisez SQL*Plus de l'environnement:
'select
et avantfrom my_table'
.merci, je l'ai raté
Vous pouvez récupérer type de colonne avec le paquet DBMS_SQL, cependant, alors vous avez à écrire quelques lignes de code.
OriginalL'auteur zaratustra
Vous devrez utiliser le sql dynamique/requête pour obtenir ce que vous essayez de faire. Quelque chose comme ci-dessous à l'aide de
EXECUTE IMMEDIATE
. Concept tiré de Ici.Comme ci-dessous pour SQL *Plus
SELECT 'X' FROM MY_TABLE
, mais ne permet pas de sélectionner la colonne "X"En outre, l'utilisation de paramètres comme indiqué ci-dessus n'est valable que dans SQL*Plus, alors que la question est balisé de PL/SQL.
OriginalL'auteur Rahul