我寫了一個oracle函數,我需要將數據作爲q'[var]',其中var是一個變量。但是oracle並沒有把它看作一個變量。如何在函數中使用q'[]'運算符與變量
我試過q'['|| var ||']',它不起作用。把q'放在字符串中也是行不通的,因爲它並不讀q作爲操作符。我嘗試了多種組合,但似乎沒有任何工作。我究竟做錯了什麼。
我使用的是oracle 11g。
編輯:其實我正在使用sql加載程序來插入數據。在插入之前的控制文件中,我必須從數據中刪除單引號。
在控制文件中調用REPLACE_QUOTE函數,它發送從文件接收到的列數據。以下我添加了該特定列的控制文件的內容。
COLUMN "MY_SCHEMA.REPLACE_QUOTE(:COLUMN)"
這裏是函數。
create or replace function REPLACE_QUOTE(v_str in varchar2) return varchar2
is
reason varchar2(240);
begin
dbms_output.put_line(v_str);
reason := REPLACE(q'[v_str]','''',null);
RETURN reason;
END;
我試過直接在sql加載器控制文件中的替換函數,但它似乎並沒有工作。我也試過REPLACE_QUOTE(Q'[:COLUMN]),這也行不通。
這裏是刪除引號前的數據。
'Failed to connect to 'http://172.17.70.74:80/xyz.x''
我需要刪除引號,因爲此列無法在數據庫中插入。
請幫忙。謝謝。
列每列請編輯您的問題補充功能你寫的。我很好奇你爲什麼認爲你需要使用引用機制來對付已經是變量的東西 - 通常只有當你有字符串時才使用它。如果在變量中已經有一個包含引號的字符串,那麼您不需要解決報價問題,因爲該步驟已經完成。例如。 'v_string:= q'{該字符串的內容包含單引號}';''v_new_string:= v_string ||' OK!';' – Boneist
爲什麼你需要從你的數據中刪除單引號?請在刪除任何引號之前提供一些您要加載的示例數據。 – Boneist
也許你根本不需要刪除引號 - 也許這將有助於:http://www.orafaq.com/forum/t/153592/ – Boneist