java - 如何使用 JdbcTemplate 从 Spring 创建存储函数?
问题描述
出于管理需要,我需要从 Spring Repository 创建和替换存储过程。有人已经这样做了吗?
我尝试使用以下代码(未完成):
@Component
public class JdbcRepository {
@Autowired
private JdbcTemplate jdbc;
public void checkConn(){
jdbc.execute("create or replace package Z$CLIENT_INTERFACE_API as \n" +
" function CL_ORG_SEARCH_CREATE(p_request in clob) return clob;\n" +
"end Z$CLIENT_INTERFACE_API;\n" +
"/\n" +
"create or replace package body Z$CLIENT_INTERFACE_API as\n" +
" function CL_ORG_SEARCH_CREATE(p_request in clob) return clob\n" +
" is\n" +
" content_xml VARCHAR2(4000);\n" +
" p Dbms_Xmlparser.Parser;\n" +
" v_Doc Dbms_Xmldom.Domdocument;\n" +
" v_Root_Element Dbms_Xmldom.Domelement;\n" +
" v_Child_Nodes Dbms_Xmldom.Domnodelist;\n" +
" v_Child_Node Dbms_Xmldom.Domnode;\n" +
" v_Message_Id VARCHAR2(36);\n" +
" v_First_Char VARCHAR2(1);\n" +
" begin\n" +
" content_xml:= CAST(p_request as VARCHAR2);\n" +
" p := Dbms_Xmlparser.Newparser;\n" +
" dbms_xmlparser.setvalidationmode(p,False);\n" +
" dbms_xmlparser.parsebuffer(p,content_xml);\n" +
" v_Doc := dbms_xmlparser.getdocument(p);\n" +
" v_Root_Element := Dbms_Xmldom.getdocumentelement(v_Doc);\n" +
" return 'aaaaaaaaaaaaaaaaaaaaaaaaaa1';\n" +
" end;\n" +
"end Z$CLIENT_INTERFACE_API;\n" +
"/");
}
}
但是当我执行它时,我在 db 中使用了损坏的包。同时,当我从 SQLDeveloper 运行它时 - 一切都很完美。
解决方案
您用分号;
和斜杠分隔语句/
。尝试只使用其中之一,但不要同时使用两者。如果这也不起作用,请尝试分别执行每个语句execute( )
推荐阅读
- kubernetes - Kubernetes NodePort - 忽略 Ufw/Iptables?
- javascript - 如何显示来自 redux 商店的数据?
- docker - 将 docker 存储引擎从 devicemapper 更改为 overlayfs2
- python - 在 PANDAS/Python 中绘制 Groupby DatFrame 的结果
- c# - 为什么我不能创建对象实例?
- cxf - wsdl2java 生成空指针异常 apache cxf
- css - 无法更改 ng-multiselect 下拉菜单的样式
- c++ - 在没有太多条件的情况下如何避免除以零?
- c# - 如何告诉一个类它应该创建哪些对象?类型与对象混淆:(
- angular - 对 Firestore 的递归调用