我有一个HTML文件存储在数据库中。我正在使用Liquibase,但在HTML中我有很多
个实例。
问题是SQL不允许&
在没有set define off
选项的情况下运行。
我从网上了解了以下解决方案:
cdata
,但是我在这里使用Liquibase SQL格式而不是XML格式插入HTML,所以我认为它没有用。
,我不能每个都使用ASCII字符来避免&
。Liquibase执行错误:
SEVERE 6/7/17 11:30 AM:liquibase: Error executing SQL set define off
java.sql.SQLException: ORA-00922: missing or invalid option
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
Liquibase抱怨的set define off
不是SQL,it is a SQL*Plus client command:
SET DEF [INE] {& | c | ON |关闭}
将用于替换变量的字符设置为c。
ON或OFF控制SQL * Plus是否将扫描替换变量的命令并将其替换为值。 ON将c的值更改回默认值'&'而不是最近使用的字符。将DEFINE设置为OFF将覆盖SCAN变量的设置。
它也被SQL Developer和SQLcl使用。所有这些客户都使用它来控制substitution variables的行为。
Liquibase显然不会识别该客户端命令,因此应将其从脚本中删除。
答案 1 :(得分:0)
As& in&(&) 被认为是sql中的替换变量而liquibase忽略了set define off语句,所以我用ascii字符来使用&在liquibase中定义的sql查询中,如下所示:
及(号)NBSP;改为' || '&安培;' || ' NBSP' || CHR(59)|| '和查询工作