我写了一个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