博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle--带参数的存储过程(IN、OUT和IN OUT)
阅读量:2443 次
发布时间:2019-05-10

本文共 1611 字,大约阅读时间需要 5 分钟。

带参数的存储过程

存储过程允许带有参数,参数的使用将增加存储过程的灵活性,给数据库编程带来极大的方便。

存储过程中如果使用了参数,在执行存储过程时必须为其指定参数。总的来说,参数可以是常量、变量和表达式等。

Oracle有三种参数模式:

  • IN
  • OUT
  • IN OUT

IN参数

该类参数值由调用者传入,并且只能够被存储过程读取。这种模式的参数是最常用的,也是默认的参数模式。

示例:创建一个带有输入参数的存储过程,当使用Insert_student添加学生信息时,用户只需要向该存储过程传入参数值,然后由存储过程从中读取数据。

create or replace procedure Insert_student(SNO IN varchar2,SNAME IN varchar2,SSEX IN char,SAGE IN number,SDEPT IN varchar2) isbegin insert into student values(SNO,SNAME,SSEX,SAGE,SDEPT); exception   when dup_val_on_index then dbms_output.put_line('重复的学生ID');   when others then dbms_output.put_line('发生其它错误!'); end Insert_student;

执行存储过程并传递参数:

共有三种方式:

  • 名称传递
    在这里插入图片描述
  • 位置传递
    在这里插入图片描述
  • 组合传递
    在这里插入图片描述

OUT参数

该类参数值由存储过程写入。

示例:创建一个带有输出参数的存储过程,该存储过程根据学生的姓名返回该学生的所属学院。

create or replace procedure p_getSdept(NAME IN varchar2,DEPT OUT varchar2) is temp varchar(20);begin  select s.SDEPT into temp  from student s  where s.SNAME=NAME;  DEPT := temp;end p_getSdept;

执行:

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020010419172434.png)### IN OUT参数==示例:使用IN OUT参数交换两个变量的值==```sqlcreate or replace procedure p_swap(value1 in out number,value2 in out number) is temp number;begin  temp := value1;  value1 := value2;  value2 := temp;end p_swap;

执行:

declare   var_1 varchar2:=1;  var_2 varchar2:=2begin  p_swap(var_1,var_2);  dbms_output.put_line('var_1='||var_1);  dbms_output.put_line('var_2='||var_2);end;

默认值问题

创建存储过程的同时可以给输入参数提供默认值。OUT和IN OUT参数不具有默认值。

示例:根据传入SNO查询学生姓名,默认查询1号学生姓名

create or replace procedure p_getStudent(s_no in varchar2 default '1')is name varchar2(20);begin  select SNAME into name  from student   where SNO = s_no;  dbms_output.put_line('name='||name);end p_getStudent;

执行:

在这里插入图片描述

在这里插入图片描述

转载地址:http://vkpqb.baihongyu.com/

你可能感兴趣的文章
mysql事务处理(转)
查看>>
Fedora 显示设备配置工具介绍(转)
查看>>
FREEBSD 升级及优化全攻略(转)
查看>>
系统移民须知:Linux操作系统安装要点(转)
查看>>
在redhat系统中使用LVM(转)
查看>>
Gentoo 2005.1 完整的USE参数清单中文详解(转)
查看>>
手机最新触控技术
查看>>
Kubuntu 项目遭遇困难(转)
查看>>
kubuntu使用日记之 eva的配置使用(转)
查看>>
unix下几个有用的小shell脚本(转)
查看>>
QQ病毒的系列处理办法(转)
查看>>
基于IBM大型主机,Linux开辟意大利旅游新天地(转)
查看>>
一些Linux试题(经典!!)(转)
查看>>
优化MySQL数据库性能的八大“妙手”(转)
查看>>
银行监会选红旗Linux建设公文传输系统(转)
查看>>
网上交易中帐号和密码被盗的解决途径(转)
查看>>
Java线程总结(转)
查看>>
Java学习之类的属性(转)
查看>>
轻松搞定Java内存泄漏(转)
查看>>
Java学习之值传递(转)
查看>>