我需要動態給出假脫機文件名,並且在調用sqlplus時必須傳遞參數。下面是我試過的sqlplus動態假脫機文件名
echo exit | sqlplus "{{ Oracle_username }}/ {{ Oracle_pwd}} @(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host={{ Oracle_HostName }})(Port=1521))(CONNECT_DATA=(SID= {{Oracle_SID }})))" @Script.sql 'AppName' 'DatabaseName' 'ObjectType'
在這裏,我嘗試動態地傳遞應用名稱,數據庫名稱和對象類型。在此之前運行SQLPLUS一步,我動態創建的文件夾(應用程序名稱,數據庫名稱,對象類型的所有文件夾,它會根據每個應用而有所不同)。下面是我的script.sql看起來像:
SPOOL &&AppName/&&DatabaseName/&&ObjectType/Output.csv
<<SQL Script>>
SPOOL OFF
這努力工作。有人能告訴我需要改變什麼嗎?
什麼是「不工作」的意思是 - 會發生什麼?你是否在某處定義了替代變量? –
當我通過傳遞參數像上面那樣後臺打印時,輸出不會被導出。沒有參數,當我執行腳本時,它就可以工作。例如:SPOOL AppName/Databasename/Output.csv。我正在運行Ansible playbook的所有這些步驟。我將在一個單獨的var文件中聲明所有這些值。 –