我有一个本机SQL查询,看起来像这样:
Query query = session.createSQLQuery("SELECT
XMLSERIALIZE
(CONTENT
XMLELEMENT
(
NAME \"ltc:DOAATLTC\",
XMLATTRIBUTES
(
'http://www.edftrading.com/Trade/Common/DoaatLTC' AS \"xmlns:ltc\",
'http://www.edftrading.com/Trade/Common/DoaatLTCHourlyNomination' AS \"xmlns:ltchnom\"
),
XMLELEMENT ( ... ) FROM ...");
Run Code Online (Sandbox Code Playgroud)
问题是,Hibernate的解释:DOAATLTC\",
,:ltc\",
,:ltchnom\",
作为参数,并希望我们给值query.setString("DOAATLTC\",", ...)
,query.setString("ltc\",", ...)
,query.setString("ltchnom\",", ...)
但我不希望Hibernate这样解释,所以我想逃避冒号:
.
怎么做 ?
在以下代码中:
SELECT ... FROM ... CROSS JOIN TABLE ... WHERE ...;
Run Code Online (Sandbox Code Playgroud)
CROSS JOIN TABLE是什么意思?
我在网上搜索,但我只能找到CROSS JOIN.
我想CROSS JOIN TABLE作用于一个表,意思是这样的表:
CREATE OR REPLACE ... AS TABLE OF ...;
Run Code Online (Sandbox Code Playgroud)
这是完整的查询:
SELECT prog.id_oct_prog_tran_a_participati, prog.code_ressource, prog.instant_depart, prog.commentaire, prog.en_hors_economie_de_comb, discr.delai, discr.valeur_point, MOD(delai, 60) AS H24
FROM req_prog prog
CROSS JOIN TABLE(POINTS_DISCRETS(pIdChronique=>id_chr_substitution)) discr
WHERE horizon <= 'J1'
AND delai > 0
ORDER BY id_oct_prog_tran_a_participati, instant_depart, horizon, delai
Run Code Online (Sandbox Code Playgroud)
POINTS_DISCRETS
是一个返回类型元素的函数TYPE_TAB_POINT
.并且TYPE_TAB_POINT
是DBA创建的类型如下:
create or replace TYPE "TYPE_TAB_POINT" AS TABLE OF TYPE_POINT;
Run Code Online (Sandbox Code Playgroud)
TYPE_POINT
创建的类型在哪里:
create or …
Run Code Online (Sandbox Code Playgroud)