在sqlplus命令中替换HTML实体

时间:2017-03-14 07:40:23

标签: oracle shell sqlplus html-entities

所以,我有一个自动生成的sql文件,我正在尝试使用sqlplus命令运行,但问题是......可能有HTML实体(在这种情况下)需要更换,所以它不会询问用户任何价值,这是我所拥有的一个例子:

CREATE TABLE MY_TABLE (
    TABLE_KEY CHAR(24) DEFAULT '' '' NOT NULL,
    TABLE_FIELD CHAR(40) DEFAULT '' '' NOT NULL
)

我正在尝试使用以下命令运行它:

sqlplus USER/PASSWORD @<path_to_sql_file>

有没有办法在没有sqlplus的情况下获取实际的撇号来询问我的“瑕”值?

非常感谢你对此的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用CHR(38)代替&(正如Ersin已经提出的那样),也可以使用

SET DEFINE OFF

在SQL * Plus脚本的顶部。您甚至可以定义除&以外的其他字符用于前缀替换变量,请参阅文档SET DEFINE

<强>更新

如果您在脚本DEFAULT '&apos; &apos;'中写入,那么Oracle会将&apos; &apos;置为默认值 - 您还期望什么? Oracle数据库不是HTML浏览器。

如果你想要两个撇号,那么写DEFAULT ''' '''。为了在字符串中转义',只需将其加倍。

如果必须更新现有值,可以使用update语句:

UPDATE MY_TABLE SET TABLE_KEY = DBMS_XMLGEN.CONVERT(TABLE_KEY, 1);

答案 1 :(得分:0)

您可以使用&#39; || chr(38)||&#39; &#39;&amp;&#39; 字符p>

试试这个:

CREATE TABLE MY_TABLE (
    TABLE_KEY CHAR(24) DEFAULT chr(38)||'apos; '||chr(38)||'apos;' NOT NULL,
    TABLE_FIELD CHAR(40) DEFAULT chr(38)||'apos; '||chr(38)||'apos;' NOT NULL
)