El problema es que SQL*Plus trata la cadena completa después de &
, hasta el siguiente espacio en blanco o similar, como el nombre de la variable de sustitución. Claramente eso no es lo que quieres aquí.
Afortunadamente, han pensado en esto y puede indicar el final del nombre de la variable con un .
:
FROM &3._TABLE
(Al menos, eso funciona para las variables con nombre, y estoy casi seguro de que lo hará para las posicionales... si no, entonces deberá definir una nueva variable establecida en &3
como solución alternativa).
Está en la documentación , pero parpadea y te lo perderás:
Hay un efecto relacionado que quizás desee tener en cuenta para el futuro. Si el siguiente carácter después de la variable de sustitución es un .
de todos modos, entre el esquema y la tabla, o entre la tabla y la columna, por ejemplo, eso se interpretará como el terminador de sustitución. Digamos que estaba pasando el esquema por separado como &4
, con valor 'scott'
; esto:
FROM &4.&3._TABLE
parece razonable pero se sustituiría por scottdev_TABLE
, que no será reconocido. Entonces, en ese caso, necesita tener uno adicional:
FROM &4..&3._TABLE
que se sustituiría por scott.dev_TABLE
.