`

Oracle + mybatis 调用存储过程遇到的问题

 
阅读更多

我程序预期是调用存储过程执行Update操作,表名需要传参数拼

最终版代码:

mapping.xml部分代码:

<select id="updateBrandAByBrand" statementType="STATEMENT">
  	<![CDATA[
        {call BRAND_${_parameter}('${_parameter}')}]]>
 </select>

 存储过程部分代码:

CREATE OR REPLACE PROCEDURE BRAND_A0101(tabname IN VARCHAR2) AS 
v_sql VARCHAR2(300);
BEGIN 
  v_sql:='update T_EXTERNAL_PRODS_TEMP_'||tabname||'_2 set BRANDNAME_A = TRIM(REPLACE(BRANDNAME,'' '','' '')) where BRANDNAME is not null';
  EXECUTE IMMEDIATE v_sql;
 -- EXEC BRAND_A0101(v_num);
END BRAND_A0101;

 就为拼T_EXTERNAL_PRODS_TEMP_A0101_2这个表名,直接写 Update 拼表名貌似数据库会报错,需要转成字符串在执行,同时遇到第二个问题 后面单引号,解决的方式是2个单引号代表1个单引号转义 其实还可以用 char(39),  select char(39)  结果也是 ‘

 

这样理解吧:
1、''是字符界定符,告诉SQL你输入的是字符,SQL已经知道@sitemtext是字符类型,所以不需要。
2、LIKE '%XXX%' 可以拆分为 '%' + 'XXX' + '%','XXX' = @sitemtext。
3、EXEC执行字符串:@sitemtext对于EXEC来说变量,但对于EXEC内部的字串指令来说,它是常量,在运行EXEC之前,@sitemtext必然有个确定值(比如@sitemtext='TEST'),如果用1点代替3点,则变成“……NID = TEST……”,那字串指令将TEST解析为对象名。
4、道理同上。

比较笨的方法(也是避免错误的最佳方法):
A、全部先不加点:
    exec (declare mycursor cursor for select top @maxitems SID,NID,NTime from (select top @mycount * from V_PC_DOWNUPDATE where BName like '%@sitemtext+%') as MyTable order by NTime desc)
B、加首尾两点:
    exec ('declare mycursor cursor for select top @maxitems SID,NID,NTime from (select top @mycount * from V_PC_DOWNUPDATE where BName like '%@sitemtext+%') as MyTable order by NTime desc')
C、给字串指令解析为数字的变量加1点:
    exec ('declare mycursor cursor for select top ' + @maxitems + ' SID,NID,NTime from (select top ' + @mycount + ' * from V_PC_DOWNUPDATE where BName like '%@sitemtext+%') as MyTable order by NTime desc')
C、给字串指令解析为字符的变量加3点:
    exec ('declare mycursor cursor for select top ' + @maxitems + ' SID,NID,NTime from (select top ' + @mycount + ' * from V_PC_DOWNUPDATE where BName like ''%' + @sitemtext + '%'') as MyTable order by NTime desc')
D、检查在()里面,除了变量和“+”号,全部变成红色。多写你就会很熟练,直接写出来都可以了,不用那么麻烦。

分享到:
评论

相关推荐

    springboot整合mybatis调用oracle存储过程

    至此,我们就完成了Spring Boot整合MyBatis调用Oracle存储过程并处理游标返回数据的过程。在实际开发中,可以根据需求调整存储过程的逻辑和结果处理方式,以满足各种复杂业务场景。注意,对于大数据量的查询,使用...

    springMVC+MyBatis+Oracle+Web实现增删改查完整案例+数据库数据)

    在本项目中,Oracle作为数据存储的后端,与Spring MVC和MyBatis进行交互,完成数据的增删改查操作。 **Web实现**: 在Web层面上,项目可能使用了HTML、CSS和JavaScript等技术构建用户界面,并通过HTTP协议与服务器...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

    Spring+Springmvc+Mybatis+Oracle+Redis

    在IT行业中,构建一个完整的应用程序框架是开发过程中的重要步骤,尤其对于企业级应用来说更是如此。本项目采用的是Spring、SpringMVC、Mybatis、Oracle数据库和Redis缓存技术,构建了一个高效、稳定的系统架构。...

    spring+springmvc+mybatis搭建的一个酒店管理系统附带mysql数据库

    【标题】"spring+springmvc+mybatis搭建的酒店管理系统附带mysql数据库"涉及的核心技术是Java企业级开发中的Spring框架、SpringMVC模块以及MyBatis持久层框架,同时结合了MySQL数据库来存储和管理数据。这个项目是...

    springboot+mybatis+mysql+layUI+thymeleaf实现增删改查

    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。在本项目中,MyBatis作为数据访问层,用于处理与数据库的交互,包括查询、...

    springboot+mybatis+oracle+maven

    - MyBatis是一个持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 - 配置MyBatis,需要在Spring Boot中添加MyBatis starter依赖,并在配置...

    eclipse+Oracle+Mybatis源代码(可用)

    在Java开发领域,Eclipse是常用的集成开发环境(IDE),Oracle是知名的关系型数据库管理系统,而Mybatis则是一个优秀的持久层框架。这个压缩包“eclipse+Oracle+Mybatis源代码(可用)”提供了一个基础的Java项目示例...

    spring mybatis 调用oracle存储过程

    在Spring和MyBatis的集成中,通过MyBatis的SqlSession对象可以调用存储过程。Oracle存储过程是一组预编译的SQL语句,可以在数据库服务器端执行,提供更好的性能和安全性。 1. **无返回值的存储过程**: 当存储过程...

    29、springmvc+spring+mybatis+oracle12的demo

    标题 "29、springmvc+spring+mybatis+oracle12的demo" 暗示了一个集成开发环境的示例,其中涵盖了四个关键组件:Spring MVC(Spring的模型视图控制器框架)、Spring(核心Java企业级应用框架)、MyBatis(持久层框架...

    springMVC+spring+mybatis+oracle框架所需jar包

    在Java Web开发中,Spring MVC、Spring和MyBatis是常用的三大框架,它们结合Oracle数据库构建了一种高效、灵活的企业级应用解决方案。本压缩包包含了这些框架与Oracle数据库交互所需的jar包,下面是关于这些框架和...

    spring mvc + mybatis + maven + easyui + oracle 数据库实现增删改查.rar

    在这个项目中,Oracle作为后端存储,保存并处理所有的业务数据。MyBatis通过JDBC驱动与Oracle数据库进行通信,执行SQL语句。 项目实施流程可能包括以下几个步骤: 1. 配置Maven环境,添加项目依赖。 2. 设计数据库...

    springboot+mybatis

    在这个基于SpringBoot和MyBatis的项目中,我们还引入了Oracle数据库和Thymeleaf模板引擎,使得整个系统具备了完整的数据存储和前端展示能力。 首先,SpringBoot是Spring框架的一个简化版本,它内置了Tomcat服务器,...

    MyBatis调用存储过程

    MyBatis作为一款流行的Java持久层框架,提供了调用存储过程的功能。下面将详细介绍如何在MyBatis中配置和使用存储过程。 ### 1. 配置MyBatis XML映射文件 在MyBatis的映射文件(mapper.xml)中,我们需要为存储...

    Mybatis调用Oracle存储过程的方法图文详解

    Mybatis调用Oracle存储过程的方法详解 Mybatis是一款流行的持久层框架,广泛应用于Java企业级应用开发中。 Oracle存储过程是一种高效的数据库操作方式,通过存储过程可以实现复杂的业务逻辑操作。那么,如何使用...

    Spring+SpringMvc+Mybatis学生管理系统

    数据库是系统存储数据的地方,这里可能使用的是MySQL、Oracle或其他关系型数据库。Mybatis通过XML配置文件或注解方式定义SQL语句,实现了数据库操作的动态映射。在学生管理系统中,数据库可能包含"学生"、"课程"等表...

    springMVC+cxf+mybatis整合项目

    4. **Oracle** 数据库:作为后端存储,Oracle 提供了强大的数据库管理功能,支持事务处理、并发控制和复杂的查询。MyBatis 通过 JDBC 与 Oracle 数据库交互,执行 SQL 语句。 在这个项目中,`webserviceserver` ...

    mybatis+spring+springmvc+oracle

    MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    SpringMVC+Spring+Mybatis+Oracle 实现HR管理(CRUD)

    SSMHR是一个基于SpringMVC、Spring和Mybatis的Oracle数据库驱动的人力资源管理系统,用于实现CRUD(创建、读取、更新、删除)操作。这个项目的核心是整合这三个技术来构建一个高效、灵活的后端框架,适用于企业级...

Global site tag (gtag.js) - Google Analytics