sql >> Databasteknik >  >> RDS >> Oracle

Parametrerar tabellnamn i sqlplus-indatafil

Problemet är att SQL*Plus behandlar hela strängen efter & , upp till nästa blanksteg eller liknande, som namnet på ersättningsvariabeln. Det är uppenbarligen inte vad du vill här.

Lyckligtvis har de tänkt på detta, och du kan beteckna slutet av variabelnamnet med en . :

FROM &3._TABLE

(Åtminstone fungerar det för namngivna variabler, och jag är nästan säker på att det kommer att göra det för positionsvariabler... om inte så måste du definiera en ny variabeluppsättning till &3 som en lösning).

Det finns i dokumentationen , men blinka så missar du det:

Det finns en relaterad effekt som du kanske vill ha i åtanke för framtiden. Om nästa tecken efter substitutionsvariabeln är en . hur som helst - mellan schemat och tabellen, eller mellan tabell och kolumn, till exempel - så kommer det att tolkas som substitutionsterminatorn. Säg att du skickade schemat separat som &4 , med värdet 'scott'; detta:

FROM &4.&3._TABLE

ser rimligt ut men skulle ersättas med scottdev_TABLE , som inte kommer att kännas igen. Så i det fallet måste du ha en extra:

FROM &4..&3._TABLE

som skulle ersättas med scott.dev_TABLE .




  1. Lagrad procedur och fylla i en Temp-tabell från en länkad lagrad procedur med parametrar

  2. Formatera data till en viss färg

  3. Hur man får databasdetaljer är vyer i opencart

  4. Hur listar man aktiva/öppna anslutningar i Oracle?