- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经看到了有关此错误的几个问题,但每个解决方案都不同,因为它是所谓的“语法错误”。我在生产中使用 Oracle,在开发中使用 Derby(非常烦人,但我能做什么)。
当我运行在 Oracle 上创建的某个 SQL 命令时,它似乎工作正常并且执行其预期的操作(正在使用 Oracle SQL Developer)。但是当我想在 Derby 中运行相同的命令时,我遇到了这个错误。
无论我做什么,我都会遇到这个错误。
WARN | SQL Error: 20000, SQLState: 42X01
ERROR | Syntax error: Encountered "WHERE" at line 94, column 6.
我一生都无法弄清楚出了什么问题。这是我的 SQL 命令。有点长而且复杂:
CREATE VIEW BDPBCDBView AS SELECT
BDP_INSTITUTION_NAME,
BIC,
BDP_COUNTRY_NAME,
BDP_ISO_COUNTRY_CODE,
BDP_CITY,
BDP_NETWORK_CONNECTIVITY,
BDP_SERVICE_CODES,
BDP_ISTARGET,
BCDB_NAME,
BCDB_LAENDERKENNZEICHEN,
BCDB_AKTIVMERKMALBANK,
BCDB_AKTIVMERKMALLAND,
BCDB_AKTIVMERKMALBANKLAND,
BCDB_SWIFTKENNZEICHEN,
COUNTRYCODE,
ISBDP,
ISBCDB,
BCDB_ORT,
s1.BICS_RMA
FROM
(SELECT
bdp.bic,
bdp.institution_name AS bdp_institution_name,
bdp.country_name AS bdp_country_name,
bdp.iso_country_code AS bdp_iso_country_code,
bdp.city AS bdp_city,
bdp.network_connectivity AS bdp_network_connectivity,
bdp.service_codes as bdp_service_codes,
bdp.isTarget AS bdp_isTarget,
bcdb.name as bcdb_name,
bcdb.laenderKennzeichen as bcdb_laenderKennzeichen,
bcdb.aktivMerkmalBank AS bcdb_aktivMerkmalBank,
bcdb.aktivMerkmalLand AS bcdb_aktivMerkmalLand,
bcdb.aktivMerkmalBankLand AS bcdb_aktivMerkmalBankLand,
bcdb.swiftKennzeichen AS bcdb_swiftKennzeichen,
CASE
WHEN bcdb.laenderKennzeichen IS NOT NULL THEN bcdb.laenderKennzeichen
ELSE bdp.iso_country_code
END AS countryCode,
CASE
WHEN bdp.bic IS NOT NULL THEN 1
ELSE 0
END AS isbdp,
CASE
WHEN bcdb.bic IS NOT NULL THEN 1
ELSE 0
END AS isbcdb,
bcdb.ort AS bcdb_ort
FROM BDP bdp LEFT JOIN BCDB bcdb ON bdp.bic = bcdb.bic WHERE bdp.bic IS NOT NULL
UNION ALL SELECT
bcdb.bic,
bdp.institution_name AS bdp_institution_name,
bdp.country_name AS bdp_country_name,
bdp.iso_country_code AS bdp_iso_country_code,
bdp.city AS bdp_city,
bdp.network_connectivity AS bdp_network_connectivity,
bdp.service_codes as bdp_service_codes,
bdp.isTarget AS bdp_isTarget,
bcdb.name as bcdb_name,
bcdb.laenderKennzeichen as bcdb_laenderKennzeichen,
bcdb.aktivMerkmalBank AS bcdb_aktivMerkmalBank,
bcdb.aktivMerkmalLand AS bcdb_aktivMerkmalLand,
bcdb.aktivMerkmalBankLand AS bcdb_aktivMerkmalBankLand,
bcdb.swiftKennzeichen AS bcdb_swiftKennzeichen,
CASE
WHEN bcdb.laenderKennzeichen IS NOT NULL THEN bcdb.laenderKennzeichen
ELSE bdp.iso_country_code
END AS countryCode,
CASE
WHEN bdp.bic IS NOT NULL THEN 1
ELSE 0
END AS isbdp,
CASE
WHEN bcdb.bic IS NOT NULL THEN 1
ELSE 0
END AS isbcdb,
bcdb.ort AS bcdb_ort
FROM BDP bdp RIGHT JOIN BCDB bcdb ON bdp.bic = bcdb.bic WHERE bdp.bic IS NULL)
t1 LEFT JOIN ( SELECT * FROM
(
SELECT s1.BIC_CRSPNDT AS BICS_RMA FROM
(SELECT
rma.crspdt AS BIC_CRSPNDT,
rma.issr AS BIC_ISSR
From RMA
WHERE ((RMA.tp= 'Issued' OR RMA.tp = 'Received') AND RMA.RMASTS='Enabled' AND RMA.SVCNM='swift.fin') )s1
UNION
SELECT s1.BIC_ISSR AS BIC FROM (SELECT
rma.crspdt AS BIC_CRSPNDT,
rma.issr AS BIC_ISSR
FROM RMA
WHERE ((RMA.tp= 'Issued' OR RMA.tp = 'Received') AND RMA.RMASTS='Enabled' AND RMA.SVCNM='swift.fin') )s1 )
WHERE BICS_RMA IS NOT NULL
ORDER BY BICS_RMA) s1
ON (s1.BICS_RMA = substr(t1.BIC, 1,8))
错误发生在倒数第三行。
我在 Java 中读到的代码是:
@PersistenceContext
EntityManager em;
@PostConstruct
public void createViewIfNeeded() {
if (FidaProfile.isActive(FidaProfile.DEVELOPMENT)) {
em.createNativeQuery("DROP TABLE BDPBCDBView").executeUpdate();
String command_1 = loadDevelopmentViewScript("DEV-DB/init_dev_view.sql");//BDPBCDView sql script, this is made from 3 tables namely BCDB, BDP and RMA
em.createNativeQuery(command_1).executeUpdate();
}
}
public void setEm(EntityManager em) {
this.em = em;
}
private String loadDevelopmentViewScript(String addressOfSQLScript) {
try {
InputStream stream = BDPBCDPViewGenerator.class.getClassLoader().getResourceAsStream(addressOfSQLScript);
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = stream.read(buffer)) != -1) {
result.write(buffer, 0, length);
}
return result.toString("UTF-8");
} catch (IOException e) {
throw new FidaErrorCodeException(FidaErrorCode.UNEXPECTED_EXCEPTION,
"Could NOT load Development-View-Script", e);
}
}
最佳答案
顺便说一句,良好的格式对于跟踪复杂查询中发生的情况至关重要!
由于我之前的答案不正确,如果您要更改 s1 子查询以便进行逆透视而不是使用联合,会怎么样?像这样的东西:
SELECT DISTINCT CASE WHEN dummy.id = 1 THEN r.bic_crspndt
WHEN dummy.id = 2 THEN r.bic_issr
END AS bics_rma
FROM (SELECT rma.crspdt AS bic_crspndt,
rma.issr AS bic_issr
FROM rma
WHERE (rma.tp = 'Issued' OR rma.tp = 'Received')
AND rma.rmasts = 'Enabled'
AND rma.svcnm = 'swift.fin') r
INNER JOIN (SELECT 1 ID FROM dual UNION ALL
SELECT 2 ID FROM dual) dummy ON (dummy.id = 1 AND r.crspdt IS NOT NULL)
OR (dummy.id = 2 AND r.issr IS NOT NULL);
如果您这样做,Derby 数据库也许能够应付?
注意我通过条件交叉连接使用手动 UNPIVOT,而不是 Oracle 11g UNPIVOT 函数,因为我不知道有关 Derby 的任何信息,而且那里可能不支持 UNPIVOT。我无法理解为什么您被迫在实时环境和开发环境之间使用不同的数据库平台;听起来很疯狂,而且可能相当危险!我想您已经尝试过标记这一点!
关于java - Derby 中的sql错误 - ERROR 42X01 : Syntax error: Encountered “WHERE” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42811157/
Select distinct APP.bca_cart.InventoryCode,APP.bca_cart.InventoryID,APP.bca_cart.CartID,APP.bca_cart
有没有办法在 derby 数据库中像 mysql 那样逐列添加? 最佳答案 我不相信。列排序并不是真正的标准 SQL 功能。编写良好的数据库应用程序不应该关心列排序。您可以通过命名 SQL 语句中的列
我已经在 Glassfish/Netbeans 中设置了 Derby DB 密码。我还选中了记住我复选框。 现在我不能再更改密码了。 最佳答案 要更改密码,您只需执行: call SYSCS_UTIL
我在 google 上搜索了一些关于 apache derby 中不区分大小写的搜索。所有谷歌搜索结果都非常旧(2007 年最新)。我发现在不丢失索引的情况下搜索不区分大小写是不可能的(“LOWER”
如何做到这一点? SYSCOLUMNS 系统表只有表的列。 SYSCHECKS 有一个 REFERENCEDCOLUMNS 对象。有什么办法可以得到这个。 我知道 JDBC getPrimaryKey
我已经使用derby db开发了一个应用程序。我已经在系统中创建了数据库。我需要将应用程序与数据库一起交付。我已删除表中的所有数据。仅保留表(数据为空的结构)。因此,如果我将db文件(所有这些文件,l
Derby没有rownum功能吗? 在oracle中,我可以选择前3行,如下所示。 select * from a where rownum < 3 在here中,他们建议如下。但这很乏味。 SELE
我正在使用嵌入式 Java 数据库来保存公交时刻表。当新计划可用时,我会自动将新计划加载到数据库表中,然后从数据库中删除旧计划。这会自动发生,无需用户干预。 我注意到数据库会随着时间的推移而变慢。我有
假设我已连接到 derby 服务器。我需要知道哪些数据库可供我连接。有命令可以这样做吗? 最佳答案 没有这样的命令。 Derby 不维护所有已知数据库的整体注册表或目录。 每个数据库都是独立的,可以通
我正在关注 Derby.js getting started guide .我跑了 $ npm install -g derby 一切都成功了,但是当我输入 $ derby new app-name
我正在寻找如何检查数据库是否存在的信息——从 Java 代码——在 hsqldb 和 Apache derby 中。在Mysql中很容易,因为我可以查询系统表--INFORMATION_SCHEMA.
我在我的 Mac 上使用 Netbeans 7.1 创建了一个 JavaDB(Derby) 数据库,我正在搜索一个免费软件应用程序,我可以使用它来查看包含所有表及其连接的完整数据库模式的图片。有任何想
我想在网络服务器模式下使用 Derby,并按照他们网站上的说明进行操作。 Derby 开局: /opt/glassfish/4.0/javadb/bin/NetworkServerControl st
我有一个使用 derby 和 JPA 的项目。我可以在我的应用程序中正常连接到数据库。我想使用 SQL Developer 连接到嵌入式数据库,以便我可以轻松浏览/查询数据库中的数据。 这是我正在使用
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
有没有办法在 ij 中“漂亮地打印”查询结果?由于在查询结果中到处乱扔列,因此默认结果看起来非常难以理解。 在 PostgreSQL 中,有/pset 命令来控制 pgsql 命令的结果,我正在为 D
当我在 WildFly 上正常定义 Derby 数据源时,db.lck 文件未被删除,这表明每次关闭 WildFly 时数据库都没有正确关闭。因为嵌入式 Derby 需要一个特殊的关闭过程,该过程正在
我在 Google 上没有找到任何相关信息,但我认为这一定是可能的。 我的 Hibernate 项目遇到了一个严重的问题: 我有两个模块,一个主模块和一个工具模块。他们应该使用相同的数据库(嵌入式 D
我正在使用 Spring 构建一个 JavaEE 应用程序,我正在尝试将它与 DerbyEmbeddedDriver 连接起来。该应用程序将在 SAP Hana Cloud Platform 试用版上
我正在使用 Derby DB作为我的 Qpid broker 的存储.当作为嵌入式数据库运行时,试图找出 Derby 存储数据文件的位置。 任何人都知道文件所在的位置或如何设置要使用的目录? 最佳答案
我是一名优秀的程序员,十分优秀!