2016-04-22 58 views
0

假設有名爲「GROUP_DETAILS」的表具有列(名稱,代碼,說明)。如何檢查表中所有列的新行字符

那麼,表看起來像這樣:

enter image description here

我試圖找到表中的所有列換行字符。然後,只要找到該列,我也想顯示爲輸出。我已經創建瞭如下腳本。

DECLARE 
BEGIN 
    FOR r IN (select column_name from user_tab_columns where TABLE_NAME = 'GROUP_DETAILS') LOOP 
    select r from GROUP_DETAILS where instr(r, chr(10)) > 0; 
    END LOOP; 
END; 

我收到如下錯誤;

錯誤報告 - ORA-06550:行4,列48: PLS-00382:表達式是錯誤的類型 ORA-06550的:4行,第12列: PLS-00382:表達是錯鍵入 ORA-06550:第4行,第5列: PLS-00428:此SELECT語句中預期有一個INTO子句 06550. 00000 - 「行%s,列%s:\ n%s」 *原因:通常PL/SQL編譯錯誤。 *操作:

+0

爲什麼標記爲MySQL? – tadman

+0

使用'r.column_name'獲取列名並將其更改爲動態查詢,在這兩處將列名連接到查詢字符串。它也缺少'INTO'子句來獲取變量中的字符串。 – ruudvan

+0

@tadman我認爲他們在開發時並不是不同的東西 – oisleyen

回答

1

您是否需要在PL/SQL中執行此操作?你可以得到與普通的SQL違規行,像這樣:

select name, code, description, 
     case when name  like '%' || chr(10) || '%' then 'name, '  end || 
     case when code  like '%' || chr(10) || '%' then 'code, '  end || 
     case when description like '%' || chr(10) || '%' then 'description' end 
     as where_found 
from group_details 
where name  like '%' || chr(10) || '%' 
    or code  like '%' || chr(10) || '%' 
    or description like '%' || chr(10) || '%'; 

這將返回在列中的至少一個包含一個換行符的所有行,計算where_found列將確切地告訴你哪些列有那些值。 (它們也會清晰可見;如果需要,計算列可用於進一步處理。)

相關問題