`

存储过程总结

阅读更多

完整的过程结构如下:
create or replace procedure
过程名 as

声明语句段;
begin
执行语句段
;
exception
异常处理语句段
;
end;

过程是有名称的程序块,as关键词代替了无名块的declare

 

以下是根据例子说明各种存储过程的调用:

create table student(

       sno number(6) primary key,

       sname varchar2(25)

       constraint s_sname_nn not null,

       ssex varchar2(6),

       sage number(6),

       sdept varchar2(25)

)

create sequence stu_seq;

insert into student values(stu_seq.nextval,'dengwenjun','male',24,'Information');

select * from student

 

创建存储过程

--1.无参数存储过程

create or replace procedure stu_pro

as

p_name student.sname%type;

--p_name是申明的一个变量,它的类型是与表studentsname字段类型一致

begin

  select sname into p_name from student where sno =28;

  dbms_output.put_line(p_name);

  end;

-- 不能忘记from table(student)

call stu_pro();

--无论是有参数还是无参数,调用时"()"是不可少的

 

--2.仅有输入参数的过程

create or replace procedure stu_pro1(pno in student.sno%type)

as

p_name student.sname%type;

begin

  select sname into p_name from student where sno =pno;

  dbms_output.put_line(p_name);

  end;

  --in表示pno为输入参数,pno是参数名称

  call stu_pro1(30);

  --pno30sql语句的意思是把表中sno=30sname赋给p_name

 

--3.仅有输出参数的存储过程

create or replace procedure stu_pro2(pname out student.sname%type)

as

begin

  select sname into pname from student where sno = 31;

  dbms_output.put_line(pname);

  end;

  --这里有一个输出参数,as后不用再申明了

  --这里调用存储过程时不能直接用call来调用,call stu_pro2(?)是错误的,针对有输入参数的。这种情况的调用将在下面oracle函数调用中说明

 

--4.同时有输入/输出参数的存储过程

create or replace procedure stu_pro3

(pno in student.sno%type,pname out student.sname%type)

as

begin

  select sname into pname from student where sno=pno;

  dbms_output.put_line(pname);

  end;

  --这里的存储过程也不能直接用call来调用,这种情况的调用将在下面oracle函数调用中说明

 

Oracle函数调用存储过程

--1.对无参数过程的调用

  --函数

create or replace function get_pname return varchar2

--is相当于过程中的as,申明返回类型return varchar2

is

pname varchar2(25);

begin

  stu_pro;

  --调用存储过程stu_pro

  select sname into pname from student where sno=32;

  return pname;

  --返回结果

  end;

--调用函数

declare

begin

  dbms_output.put_line('PL/SQL中打印的结果:'||get_pname);

end;

 

--2.对有输入参数过程的调用

create or replace function get_pname1(pno in student.sno%type) return varchar2

is

pname varchar2(25);

begin

  stu_pro1(pno);

  --调用有参数的存储过程,直接写入输入参数名

  select sname into pname from student where sno=pno;

  return pname;

  end;

  --调用函数

  declare

  begin

    dbms_output.put_line('PL/SQL中打印的结果:'||get_pname1(25));

    end;

 

--3.对有输出参数过程的调用

create or replace function get_pname2(pname out varchar2) return varchar2

is

begin

  stu_pro2(pname);

  return pname;

  end;

  --调用函数

  declare

  p_name student.sname%type;

  begin

    dbms_output.put_line('PL/SQL中打印的结果:'||get_pname2(p_name));

    end;

 

--4.对有输入/输出参数过程的调用

create or replace function get_pname3(pno in number,pname out varchar2)return varchar2

----这里pno,pname的类型不能选定范围

is

begin

  stu_pro3(pno,pname);

  return pname;

  end;

  --调用函数

  declare

  pname varchar2(25);

  begin

    dbms_output.put_line('结果是:'||get_pname3(25,pname));

  end;

  --注意最后的end;

---------------------------------------------------------------------

    对于有输出参数的存储过程,需要使用函数调用,函数调用返回对应的输出参数的值,再通过调用函数获得最后的值。

    注意创建函数时必须有return。

分享到:
评论

相关推荐

    Oracle存储过程总结

    Oracle存储过程总结,Oracle存储过程总结,Oracle存储过程总结。

    存储过程总结很全很详细

    ### 存储过程详解 #### 一、定义与作用 **存储过程**是数据库系统中预编译并存储的一系列SQL语句集合,其主要作用包括: 1. **提高执行效率**:存储过程在创建时即被编译,之后每次调用时无需再次解析和优化,...

    java 调用存储过程总结

    java 调用存储过程 总结 创建表 创建存储过程 创建java程序调用

    oracle存储过程总结.doc

    Oracle 存储过程总结 Oracle 存储过程是数据库系统中的一种重要组件,它可以将复杂的业务逻辑封装在一起,提高数据库系统的性能和可维护性。本篇文章将对 Oracle 存储过程进行总结,包括创建存储过程、变量、游标、...

    java操作存储过程总结

    【Java 操作存储过程】 在Java中操作数据库的存储过程是一项常见的任务,这对于数据库交互和数据处理至关重要。这里我们将深入探讨如何使用Java调用不同类型的存储过程,包括无参函数、有返回值的存储过程以及有...

    Java调用oracle存储过程总结

    本文将全面总结如何使用Java与Oracle存储过程进行交互。 首先,理解Oracle存储过程的基本概念。存储过程是预编译的SQL语句集合,存储在数据库中,可以接受参数、执行一系列操作并返回结果。它们提高了性能,减少了...

    用java调用oracle存储过程总结

    } } catch (SQLException ex1) { } } }}```总结与注意事项调用Oracle存储过程在Java中主要使用`CallableStatement`,通过占位符`?`来代表参数,并使用`setXXX`方法设置IN参数,`registerOutParameter`注册OUT或IN...

    Oracle调用存储过程总结

    ### Oracle调用存储过程详解 在Oracle数据库管理与开发中,存储过程是一种非常重要的数据库对象,它可以被看作是一组SQL语句与控制流语句的集合,预先编译并存储于数据库中,用于实现特定的功能。通过调用存储过程...

    用java调用oracle存储过程总结.pdf

    以下是关于如何使用Java调用Oracle存储过程的总结: 首先,我们来看无返回值的存储过程。创建一个名为`TESTA`的Oracle存储过程,它接受两个VARCHAR2类型的输入参数`PARA1`和`PARA2`,并将它们插入到`HYQ.B_ID`表中...

    用java调用oracle存储过程总结文.pdf

    本文将总结如何使用Java来调用Oracle的无返回值和有返回值的存储过程。 1. **无返回值的存储过程** 无返回值的存储过程主要用来执行一些不返回结果集的操作,如插入、更新或删除数据。以下是一个简单的示例: ```...

    用java调用oracle存储过程总结.docx

    ### 使用Java调用Oracle存储过程知识点总结 #### 一、无返回值的存储过程 **存储过程定义**: ```sql CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2, PARA2 IN VARCHAR2) AS BEGIN INSERT INTO HYQ.B_ID ...

    oracle存储过程总结-函数-语法-大全-详解.docx

    下面是 Oracle 存储过程的一些重要知识点总结。 1. 创建存储过程 创建存储过程的基本语法为: ```sql CREATE OR REPLACE PROCEDURE 过程名(参数1 IN 类型, 参数2 OUT 类型) AS -- 声明变量 BEGIN -- 存储过程的...

    用java调用oracle存储过程总结[文].pdf

    本文将总结如何使用Java来调用Oracle无返回值和有返回值的存储过程。 首先,我们来看如何调用一个无返回值的存储过程。在Oracle数据库中,创建一个名为`TESTA`的存储过程,它接收两个输入参数`PARA1`和`PARA2`,并...

    MYSQL存储过程总结[定义].pdf

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者编写包含一系列SQL语句的可重复使用的代码块。在MySQL 5及以上版本中,存储过程极大地提高了数据库操作的效率和灵活性。下面将对存储过程的几个关键...

    Sql2005系统表-语句函数及存储过程总结.docx

    本文档由xugd整理,旨在提供一个关于T-Sql语言及存储过程的综合概述。 1. **T-Sql语言** 1.1 **运算符** T-SQL支持多种运算符,包括算术运算符(+,-,*,/,%),比较运算符(=,,<,>,,>=),逻辑运算符...

    Oracle+PlSql存储过程

    **用Java调用Oracle存储过程总结** 1. 无返回值的存储过程:使用CallableStatement的`execute()`方法执行。 2. 有返回值的存储过程(非列表):设置输出参数,调用`execute()`,然后从输出参数获取结果。 3. 返回...

    Oracle PlSql 存储过程

    七、 用 Java 调用 Oracle 存储过程总结 用 Java 调用 Oracle 存储过程可以使用 JDBC 或 Oracle 的java驱动程序。下面是用 Java 调用 Oracle 存储过程的总结: 1. 无返回值的存储过程 无返回值的存储过程可以使用...

    数据库的存储过程

    总结,存储过程是数据库管理中的重要工具,它通过封装复杂的SQL操作和业务逻辑,提高了代码的可维护性和性能。理解并熟练运用存储过程,对于数据库设计和开发人员来说至关重要。通过不断实践和学习,我们可以更好地...

Global site tag (gtag.js) - Google Analytics