所以,我有一个自动生成的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的情况下获取实际的撇号?
非常感谢您对此的帮助!
您可以使用CHR(38)
而不是&
(如Ersin所建议),也可以运行
SET DEFINE OFF
在您的SQL*Plus脚本的顶部。您甚至可以定义除&
以外的其他字符以用于前缀替换变量,请参见文档集Define
update
如果您在脚本DEFAULT '' ''
中写入,则Oracle将' '
置为默认值 - 您期望还有什么?Oracle数据库不是HTML浏览器。
如果您想拥有两个撇号,则写DEFAULT ''' '''
。为了在字符串中逃脱'
,只需将其加倍即可。
如果您必须更新现有值,则可以使用"更新语句",如:
UPDATE MY_TABLE SET TABLE_KEY = DBMS_XMLGEN.CONVERT(TABLE_KEY, 1);
您可以用'|| Chr(38)||'
替换'&amp;'&amp;' char尝试以下方法:
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
)