我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PL/SQL存储过程 结合IDEA 使用会出错的地方[前方高能请注意!]

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PL/SQL存储过程 结合IDEA 使用会出错的地方[前方高能请注意!]

PL/SQL存储过程 结合IDEA 使用会出错的地方[前方高能请注意!]

PL/SQL中存储过程结合IDEA

一.存储过程是什么呢?

存储过程时被命名的PL/SQL块,存储于数据库中,是数据库对象的一种,应用程序可以调用存储过程,执行相应的逻辑

 

二.语法:

create [or replace] procedure 存储过程名称
 --三种参数模式: 
   -- IN  传入参数(默认,可以省略)
   -- OUT  传出参数 ,主要用于返回程序运行结果
   --IN OUT   传入传出参数         ↓
(参数名 参数模式  类型,参数名2  参数模式  类型,....)  --参数只指定类型,不指定长度
is|as
 --变量声明
begin
  --逻辑代码
end;

 

主要有两种操作; 一种是有返回值,一种是返回值

无返回值: 案例


--无返回值
--使用存储过程t_area添加数据id,name
--要求: id自动增长(先查询序列,获得数据,再执行insert)

--步骤1;创建存储过程
create procedure add_area
(v_name in varchar2)  --定义存储参数类型时,一定不能大写
is
 --声明变量
 v_id t_area.id%type;
begin
  --从序列中查询id,并赋值给v_id
  select seq_stuno.nextval into v_id from dual;
  --插入语句
  insert into t_area(id,name) values(v_id,v_name);
 --提交
 commit;
end;

 

如何调用呢?

--方式一
call p_add("tom",1,"1-4","30412",sysdate,1);
--方式二:在过程中调用
begin
   p_add("lucy",1,"1-5","30413",sysdate,1);
end;

 

 

有返回值 ; 案例

--有返回值
--使用存储过程t_area添加数据id,name,并调用存储过程时,打印id
create procedure add_area2
(
v_id out number,
v_name in varchar2
)
is
  --声明变量

begin
   --查询序列,并将结果赋值v_id
  select seq_stuno.nextval into v_id from dual;  
 --插入数据
  insert into t_area(id,name) values(v_id,v_name);
  --提交
  commit;
end;

 

如何调用呢?

declare
 v_id t_area.id%type;
begin
  add_area2(v_id,"煌");
dbms_output.put_line(v_id);
end;

 

 

三. 结合IDEA:

1.无返回值:

测试类:

    
    @Test
    public void testproAddarea(){
        //调用add_area 存储过程
    areaMapper.addArea("煌1");
    }

 

Mapper:


    
    @Insert("call add_area(#{name})")
   // 如果运行出错,添加下面注解,表示执行的是存储过程
  // @Options(statementType = StatementType.CALLABLE)
    public void addArea(@Param("name") String name);

划线: 可是很好用的东西,如果运行报错,直接使用,他能在运行报错时,添加了以后,解决报错噢!!

当然,现在无返回值中用不用都影响不是很大,还是可以正常运行的,接着看下面噢!!

 

2.有返回值:

测试类:

    
    @Test
    public void testproAddarea2(){
        //调用add_area2存储过程
        Area area = new Area();
        area.setName("煌3");
        areaMapper.addArea2(area);
        System.out.println(area.getId());
    }

 

Mapper:

    
    //mode=OUT  添加成功,让返回的数据不为null,
   @Insert("call add_area2(#{id, mode=OUT,jdbcType=INTEGER},#{name})")
   //只要出错直接加下面该注解可解决
   @Options(statementType = StatementType.CALLABLE)
    public  void  addArea2(Area area);

这里需要注意;如果@Insert里面对参数id需要加对应的类型以及状态

mode=OUT,   让返回的数据不为null, 否则就是报错null

 

jdbcType=INTEGER 如果不加就会报错如下,

 

所以划线的地方都是缺一不可,只要全都加上,问题就可以解决正常运行了!!

 

 

看完恭喜你,又知道了一点点!!!

你知道的越多,不知道的越多! 

~感谢志同道合的你阅读,  你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PL/SQL存储过程 结合IDEA 使用会出错的地方[前方高能请注意!]

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PL/SQL存储过程 结合IDEA 使用会出错的地方[前方高能请注意!]

PL/SQL中存储过程结合IDEA 一.存储过程是什么呢? 存储过程时被命名的PL/SQL块,存储于数据库中,是数据库对象的一种,应用程序可以调用存储过程,执行相应的逻辑   二.语法: create [or replace] procedure 存储过程名称
PL/SQL存储过程 结合IDEA 使用会出错的地方[前方高能请注意!]
2019-08-24

编程热搜

目录