完整的过程结构如下:
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是申明的一个变量,它的类型是与表student的sname字段类型一致
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);
--pno是30,sql语句的意思是把表中sno=30的sname赋给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存储过程总结。
### 存储过程详解 #### 一、定义与作用 **存储过程**是数据库系统中预编译并存储的一系列SQL语句集合,其主要作用包括: 1. **提高执行效率**:存储过程在创建时即被编译,之后每次调用时无需再次解析和优化,...
java 调用存储过程 总结 创建表 创建存储过程 创建java程序调用
Oracle 存储过程总结 Oracle 存储过程是数据库系统中的一种重要组件,它可以将复杂的业务逻辑封装在一起,提高数据库系统的性能和可维护性。本篇文章将对 Oracle 存储过程进行总结,包括创建存储过程、变量、游标、...
【Java 操作存储过程】 在Java中操作数据库的存储过程是一项常见的任务,这对于数据库交互和数据处理至关重要。这里我们将深入探讨如何使用Java调用不同类型的存储过程,包括无参函数、有返回值的存储过程以及有...
本文将全面总结如何使用Java与Oracle存储过程进行交互。 首先,理解Oracle存储过程的基本概念。存储过程是预编译的SQL语句集合,存储在数据库中,可以接受参数、执行一系列操作并返回结果。它们提高了性能,减少了...
} } catch (SQLException ex1) { } } }}```总结与注意事项调用Oracle存储过程在Java中主要使用`CallableStatement`,通过占位符`?`来代表参数,并使用`setXXX`方法设置IN参数,`registerOutParameter`注册OUT或IN...
### Oracle调用存储过程详解 在Oracle数据库管理与开发中,存储过程是一种非常重要的数据库对象,它可以被看作是一组SQL语句与控制流语句的集合,预先编译并存储于数据库中,用于实现特定的功能。通过调用存储过程...
以下是关于如何使用Java调用Oracle存储过程的总结: 首先,我们来看无返回值的存储过程。创建一个名为`TESTA`的Oracle存储过程,它接受两个VARCHAR2类型的输入参数`PARA1`和`PARA2`,并将它们插入到`HYQ.B_ID`表中...
本文将总结如何使用Java来调用Oracle的无返回值和有返回值的存储过程。 1. **无返回值的存储过程** 无返回值的存储过程主要用来执行一些不返回结果集的操作,如插入、更新或删除数据。以下是一个简单的示例: ```...
### 使用Java调用Oracle存储过程知识点总结 #### 一、无返回值的存储过程 **存储过程定义**: ```sql CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2, PARA2 IN VARCHAR2) AS BEGIN INSERT INTO HYQ.B_ID ...
下面是 Oracle 存储过程的一些重要知识点总结。 1. 创建存储过程 创建存储过程的基本语法为: ```sql CREATE OR REPLACE PROCEDURE 过程名(参数1 IN 类型, 参数2 OUT 类型) AS -- 声明变量 BEGIN -- 存储过程的...
本文将总结如何使用Java来调用Oracle无返回值和有返回值的存储过程。 首先,我们来看如何调用一个无返回值的存储过程。在Oracle数据库中,创建一个名为`TESTA`的存储过程,它接收两个输入参数`PARA1`和`PARA2`,并...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者编写包含一系列SQL语句的可重复使用的代码块。在MySQL 5及以上版本中,存储过程极大地提高了数据库操作的效率和灵活性。下面将对存储过程的几个关键...
本文档由xugd整理,旨在提供一个关于T-Sql语言及存储过程的综合概述。 1. **T-Sql语言** 1.1 **运算符** T-SQL支持多种运算符,包括算术运算符(+,-,*,/,%),比较运算符(=,,<,>,,>=),逻辑运算符...
**用Java调用Oracle存储过程总结** 1. 无返回值的存储过程:使用CallableStatement的`execute()`方法执行。 2. 有返回值的存储过程(非列表):设置输出参数,调用`execute()`,然后从输出参数获取结果。 3. 返回...
七、 用 Java 调用 Oracle 存储过程总结 用 Java 调用 Oracle 存储过程可以使用 JDBC 或 Oracle 的java驱动程序。下面是用 Java 调用 Oracle 存储过程的总结: 1. 无返回值的存储过程 无返回值的存储过程可以使用...
总结,存储过程是数据库管理中的重要工具,它通过封装复杂的SQL操作和业务逻辑,提高了代码的可维护性和性能。理解并熟练运用存储过程,对于数据库设计和开发人员来说至关重要。通过不断实践和学习,我们可以更好地...