Comment avez-vous passer un argument à un PL/SQL bloc dans un fichier sql appelé à l'aide de DÉMARRER dans sqlplus?
J'ai un script bash exécute plusieurs fichiers sql via sqlplus:
sqlplus $connectioninfo << end
start file1.sql
start file2.sql
start file3.sql $variable
quit
end
fichier3 a quelques PL/SQL:
BEGIN
DBMS_OUTPUT.PUT_LINE(&1);
END;
/
Mais il se contente d'afficher le littéral "&1"
au lieu de la valeur de $variable
. J'ai aussi essayé le suivant dans fichier3:
DEFINE var_a = &1;
BEGIN
DBMS_OUTPUT.PUT_LINE(var_a);
END;
/
et également les éléments suivants:
DECLARE
var_b VARCHAR2(64) := &1;
BEGIN
DBMS_OUTPUT.PUT_LINE(var_b);
END;
/
et enfin:
DEFINE var_a = &1;
DECLARE
var_b VARCHAR2(64) := var_a;
BEGIN
DBMS_OUTPUT.PUT_LINE(var_b);
END;
/
Cependant, j'obtiens des erreurs ou tout simplement la valeur littérale "&1' pour tous ces.
- juste petite correction ... >> fin devrait être plutôt ... << fin
- Merci. Seulement, il fixe.
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter
SET DEFINE ON
le début de votre scriptfile3.sql
.Si
SET DEFINE
estON
, SQL*Plus, remplacera&...
de substitution de paramètres avec leurs valeurs. SiSET DEFINE
estOFF
(ce qui semble être pour vous), SQL*Plus de ne pas le faire.set define off
en elle.