所以,我有一个自动生成的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的情况下获取实际的撇号来询问我的“瑕”值?
非常感谢你对此的帮助!
答案 0 :(得分:2)
您可以使用CHR(38)
代替&
(正如Ersin已经提出的那样),也可以使用
SET DEFINE OFF
在SQL * Plus脚本的顶部。您甚至可以定义除&
以外的其他字符用于前缀替换变量,请参阅文档SET DEFINE
<强>更新强>
如果您在脚本DEFAULT '' ''
中写入,那么Oracle会将' '
置为默认值 - 您还期望什么? 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
)