存储过程,函数都是数据库的对象。

创建和调用

存储在数据库中的子程序,是由plsql语言写的,完成特定功能的程序。

函数可以返回值,存过不能返回值。除此之外,一致。

create procedure 过程名(参赛列表)

as

plsql子程序

打印一helloWorld

create or replace procedure sayhelloworld

as

--说明部分

begin

dbms.output_line("hello world");

end;

调用存储过程的方式一:

execute/exec sayhelloworld

二:

begin

sayhelloworld();

sayhelloworld();

set serveroutput on;

create or replace procedure 过程名(参数列表)

as

begin

end;

/

创建带参数的存储过程

为指定的员工,涨100元薪水,并打印涨前和涨后的薪水?

create or replace procedure raisesaly(eno in number)

as

--定义一个变量,保存涨前的薪水

psal emp.sal%type;

begin

--得到员工涨前的薪水

select sal into psal from emp where empno = eno;

--

update emp set sal = sal+100 where empno = eno;

dbms_output_line("涨前":||psal||"涨后"||psal+100));

一般不在存过中,函数中,提交回滚,不能保证提交,会在同一个事务中。

如何来涨工资:

raisesal(7899);

raisesal(9999);

commit;

end;

/

输入参数in 输出参数out

不推荐远程调试

推荐本地调试(可以在生产机上虚拟机)

数据库所在的服务器在同一个机器上

调试存过:

可进行调试么?

编译以进行调试--图标变化。

sum(a=>1,b=>2)赋值方式

打断点,程序停在断点的位置上(权限问题,具备调试的权限)

管理员授权

sqlplus /as sysdba;

grant ... to...

f8单步运行

存储函数

可带参数,并返回一个计算值,也是一个命名的存储程序

结构类似,必须有一个return 值

create or replace function 函数名(参数列表)

return 返回类型

as

begin

end;

/

--查某个员工的年收入

create or replace function queryempincome(eno in number)

return number

as

--定义变量保存员工的薪水和奖金

psal emp.sal%type;

pcomm emp.comm%type;

begin

select sal,comm into psal,pcomm from emp where empno = eno;

return psal*12+pcomm;

end;

/

return 函数

可以远程调用set linesize 1000;

null值的情况下,相加为null,

nvl(pcomm,0);

out参数:

存过没有返回值。

过程和函数都可以通过out指定一个,多个out参数,可以out参数实现返回值。

查下某个员工的姓名 月薪和职位

create or replace procedure queryempinfom(emo in number,pename out varchar2,psal out number,pjob out varchar2)

as

begin

得到该员工的姓名,月薪和职位

select ename,sal,empjob into pename,pasl,pjob from emp where empno = eno;

end;

/

out中返回一个集合?

out参数太多?

集合当中只有一行。

app中访问和调用存过和存函

Java中访问和调用数据库中的子程序

Connection

Statement:sql语句运行的环境

CallableStatement:子接口

myslq和oracle的调用标准是一致的

调用存过:

{call [(,,...)]}

{call queryempinfom(?,?,?,?)}

conn.prpareCall(sql);

对于输入参数需要赋值?

对于输出参数在调用之前是没有值的,需要声明;

call.registerOutParameter(2,sqlType);--OracleTypes.VARCHAR);把数据库的类型转为Java类型。

...

执行调用

call.execute();--out参数就有返回值了

取出结果

call.getString(2);

call.getDouble(3);

call.getString(4);

打印看一看

访问存函:

{?=call [(arg1),,...)]}

{?=call queryempincome(?)}

call = conn.prepreCall(sql);

对中输出参数,声明

call.registerParameter(1,OracleTypes.NUMBER);

对于输入参数,赋值

call.setInt(2,8888);

call.execute();

执行以后,就取出结果集。

out参数中使用光标

声明包结果

包头

包体

某个部门中,所有员工的所有信息

create or replace package mypackage as

type empcursor is fef cursor;

procedure queryEmpList(dno in number,empList out empcursor);

end mypackage;

包体需要实现包头所有声明的所有方法

包体:

create or replace package body mypackage as

procedure queryEmpList(dno in number, empList out empcursor) as

begin

open empList for select * from emp where deptno = dno;

end queryEmpList;

end mypackage;

光标在使用前要打开。

Java程序中调用包

{call [,,....]}

{call mypackage.queryEmplist(?,?)}

call = conn.prepareCall(sql);

对于输入参数,需赋值

对于输出参数,需声明

call.registerOutParameter(2,OracleTypes.CURSOR);

call.execute();

取出该部门中的所有员工的信息:

rs = ((OracleCallableStatement)call).getCursor(2);

while(rs.next()){

}

java主程序怎样调用子程序_存过和函数以及在Java程序中的调用相关推荐

  1. java毕业设计—— 基于java+JPA+jsp的进销存管理系统设计与实现(毕业论文+程序源码)——进销存管理系统

    基于java+JPA+jsp的进销存管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JPA+jsp的进销存管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  2. java如何调用linux命令_java程序中如何调用linux命令

    java程序中如何调用linux命令 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服 ...

  3. C程序中图片调用技巧(程序来自潜艇大站游戏)

    C程序中图片调用技巧 摘要:介绍如何在C程序中调用图片,这将有助于加强C程序的界面的美观性. 关键词: VGA .BMP.13h.h.TIMER.H.Logo. 一.问题的引入:   C语言使用愈来愈 ...

  4. C程序中图片调用技巧

    C程序中图片调用技巧 摘要:介绍如何在C程序中调用图片,这将有助于加强C程序的界面的美观性. 关键词: VGA .BMP.13h.h.TIMER.H.Logo. 一.问题的引入: C语言使用愈来愈普及 ...

  5. matlab vb调用,VB程序中实现调用MATLAB的方法

    收稿日期:2000207227 作者简介:王跃强(1978-),男,硕士研究生,主要研究方向:光电检测及其自动化. 文章编号:1001-9081(2001)02-0095-02 VB 程序中实现调用M ...

  6. python调函数为什么没反应_python中如何调用函数

    函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用 函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时, ...

  7. 西门子主程序调用子程序_西门子PLC如何在主程序,写入调用子程序的命令?

    你既然说主程序和子程序,通常就是指西门子200PLC中,我就以Micro/Win软件的操作来说明一下. 如下图: 当你建立一个子程序后,该子程序会出现在"调用子程序"树装目录下,如 ...

  8. 易语言调用子程序_ c,易语言汇编调用子程序源码

    .版本 2 .程序集 窗口程序集1 .子程序 __启动窗口_创建完毕 ' 调子程_Asm() ' 主要用于给某个子程序'自定义事件' 它等效于某官方支持库的'调用子程序()'命令 具体使用方法 可参照 ...

  9. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...

    一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...

最新文章

  1. 简短的几句js实现css压缩和反压缩功能
  2. 推荐:Java性能优化系列集锦
  3. Node.js 博客实例(三)添加文件上传功能
  4. python场景异常_python-异常
  5. 学成在线--7.CMS页面管理开发(异常处理)
  6. OSPF-1-OSPF的数据库交换(4)
  7. Oralce的内存结构
  8. Visual Studio 2019 v16.6 Preview 3 发布
  9. 天津现代职业学院计算机网络技术,天津现代职业技术学院计算机网络技术专业2016年在辽宁理科高考录取最低分数线...
  10. 安装天文基本包:kapteyn和pyslalib
  11. java comparable排序_java_Java使用Comparable解决排序问题,本文实例讲述了Java使用Comparabl - phpStudy...
  12. 【STM32F103C8T6】 TTL转usb下载程序
  13. win10本机计算机策略,Win10怎么打开本地安全策略_Win10本地安全策略在哪?-192路由网...
  14. python中head是什么意思_python爬虫中header是什么?怎么用?
  15. A Morphable Model For The Synthesis Of 3D Faces 论文解析 3DMM
  16. 基于 abp vNext 和 .NET Core 开发博客项目 - 接入GitHub,用JWT保护你的API
  17. UT/UTC/GMT的区别和联系
  18. MFC 获取硬盘序列号、IP地址、MAC地址
  19. 苹果改变手机型号_苹果的低碳铝将改变气候
  20. 2020年9月电子学会Python等级考试试卷(三级)考题解析

热门文章

  1. 鼠标经过图片抖动效果
  2. 控制台一直报错, [WDS] Disconnected!
  3. JavaScript数据结构与算法——链表详解(下)
  4. java web 项目打成war包部署到服务器上
  5. 人工机器:jetsonnano推理时出现 Segmentation fault(core dumped)
  6. CV:深入浅出的讲解傅里叶变换(真正的通俗易懂)
  7. 3D集合图元:最小边界框/包围盒(boundingbox)
  8. vue 用户名重复验证_Vue项目中实现用户登录及token验证
  9. http的请求方法 GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明
  10. 《Java从小白到大牛》之第11章 对象