2012-02-15 111 views
0

我正在尋找很長時間來遍歷PL/SQL行的某種方式,但我沒有得到任何適當的結果。通過PL/SQL循環遍歷

例如,如果我有一個看起來像這樣的PL/SQL行row(first_name,last_name),並且我想使用PL/SQL打印名字和姓氏而不知道該行,我不知道該行如何看起來像,所以我需要某種形式的代碼看起來像這樣

FOR column IN My_Row --some way to iterate through the row. 
LOOP 
    PRINT column... --do my stuff, in this example 
END LOOP; 
+0

「PL/SQL row」是什麼意思? ROWTYPE? (逗號分隔)字符串?你爲什麼不知道該行的結構?你如何得到這一排? – 2012-02-15 07:42:40

+0

是'這是一個ROWTYPE,我不知道的原因是因爲我想遍歷所有的數據庫,這意味着我的數據庫中存在的各種ROWTYPE將會到達該代碼。 順便說一下,主要想法是找到數據庫中的所有表,其中包含某個單元格中的給定值。 謝謝。 – 2012-02-15 08:23:00

回答

1

如果你知道表中的行爲,那麼你可以從ALL_TAB_COLUMNS得到的列名的名稱。你可以圍繞它構建一個動態SQL。看到這個問關於這樣的東西湯姆文章:Referencing %rowtype variables without using column names

根據您的評論,您將瀏覽所有表格,以便您可以使用ALL_TABLES獲取所有名稱。雖然請記住ALL_TABLES是您的登錄名可以訪問的所有表格,而DBA_TABLES是數據庫中的每個表格,USER_TABLES是您的用戶擁有的表格。

+0

非常感謝,它真的幫助我,真棒! – 2012-02-16 10:30:21

+0

一些例外 ALL_TAB_COLUMNS包含表列對,但並不是所有的數據庫都存在於表內...... ALL_TAB_COLUMNS中只有少數表存在。還有另外一個地方我可以從這些價值中獲取? – 2012-02-19 08:48:17

+0

@Asaf Maimon - 「ALL_TAB_COLUMNS」顯示您有權訪問的表的列,對應於ALL_TABLES。同樣,'DBA_TAB_COLUMNS'包含數據庫中所有表的列,但您可能沒有權限查看該列表,或者從顯示的某些表中進行選擇。 – 2012-02-19 10:57:12