2014-03-19 55 views
0

我已經在循環以類似的方式創建了一個選擇:甲骨文的sqlplus不循環返回值與選擇

for i in (select column_name from all_tab_columns where table_name = '') 
    strinvar := i.column_name 

當PLSQL開發執行將返回此代碼: COLUMN1 COLUMN2 等

當我試圖在sqlplus執行這個我沒有得到任何結果。還我試圖做到這一點在sqlplus和打印文件的結果,如:

for i in (select column_name from all_tab_columns where table_name = '') 
     strinvar := i.column_name 
utl_file.put_line(Filehandle, strinvar); 

但它沒有打印任何東西。我錯過了什麼嗎? 最後一個問題與獲得的SELECT語句中值從變量喜歡做的事:

declare 
tab_name varchar2(100) := 'Test'; 

Begin 
for i in (select column_name from all_tab_columns where table_name = tab_name) 
      strinvar := i.column_name 
    utl_file.put_line(Filehandle, strinvar); 

我能有這樣的事情或者我應該創建一個表名光標並從光標取名字?

你可以請教我。 問候 喬治·喬治

+0

除了你的代碼無效 - 缺少'loop'和'end loop',缺少分號等,你似乎在尋找一個名爲'null'的表 - 並且假設你實際上運行的是相同的(有效)代碼,你作爲同一個用戶連接,還是至少有兩個用戶可以訪問你獲得列的表? –

+0

我上面寫的代碼只是僞代碼,它不會編譯,因爲我不在工作中看到實際的代碼。另外在查詢我記得我試過從all_tab_columns選擇column_name其中table_name =''和所有者=用戶,也沒有任何區別。我的問題必須要做的是,我是否可以在sqlplus中執行for stmt以及如果我可以將表名稱作爲變量 –

回答

0

您是否嘗試過與腳本中的select語句一起使用卷軸,和你在PowerShell中/ BAT/SQL寫這或只是想根據需要手動運行?此外,如果您試圖從特定表中獲取列名作爲變量傳遞,則可能需要將輸出後臺處理爲數組,以便您能夠將輸出處理爲變量。