存储过程的学习
存储过程创建语法:
create or replace procedure 存储过程名(param1 in type,param2 out type)
as
变量1 类型(值范围);
变量2 类型(值范围);
Begin
Select count(*) into 变量1 from 表A where列名=param1;
If (判断条件) then
Select 列名 into 变量2 from 表A where列名=param1;
Dbms_output。Put_line(‘打印信息’);
Elsif (判断条件) then
Dbms_output。Put_line(‘打印信息’);
Else
Raise 异常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;
注意事项:
1, 存储过程参数不带取值范围,in表示传入,out表示输出
2, 变量带取值范围,后面接分号
3, 在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4, 用select 。。。into。。。给变量赋值
5, 在代码中抛异常用 raise+异常名
环境配置
//创建test表:
create table test
(
id number(10),
name varchar2(100)
)
//创建序列
create sequence g_seq
minvalue 1
maxvalue 999999999999
start with 141
increment by 1
cache 20;
基本例子:
1 不带参数
create or replace procedure test_xg_p1
is
begin
dbms_output.put_line('hello world! this is the first procedure');
insert into test values (g_seq.nextval,'sky');
commit;
end;
2 带输入输出参数
create or replace procedure test_xg_p2(a in number,x out number)
is
begin
x:=a;
end test_xg_p2;
3 带逻辑判断
create or replace procedure
test_xg_p3(
a in number,
x out varchar2)
is
begin
if a>= 90 then
begin
x:='a';
end;
end if;
if a<90 then
begin
x:='b';
end;
end if;
if a<80 then
begin
x:='c';
end;
end if;
if a<70 then
begin
x:='d';
end;
end if;
if a<60 then
begin
x:='e';
end;
end if;
end test_xg_p3;
4 带循环
create or replace procedure test_xg_p4
(
a in number,
x out varchar
)
is
temper number(6);
begin
temper := 0;
for tempa in 0..a loop
begin
temper :=temper + tempa;
end;
end loop;
x:= temper;
end test_xg_p4;
5 带从数据库表中返回值的
create or replace procedure test_xg_p5
(
x out varchar2
)
is
temper varchar2(1024);
begin
temper :='start->';
select name into temper from test where id = 1;
x:= temper;
end test_xg_p5;
6 带游标和循环的
create or replace procedure test_xg_p6
(
x out varchar2
)
is
temper varchar2(1024);
cursor cursor1 is select * from test;
begin
temper :='start->';
for cursor_result in cursor1 loop
begin
temper :=temper||cursor_result.name;
end;
end loop;
x:=temper;
end test_xg_p6;
procedure 测试方法:
1 command window : sql > exec 存储过程名称带参数
2 command window : sql > begin
2 存储过程名称带参数;
3 end;
4 /
3 右击存储过程 > test
第三种效果最好,可以看到参数、变量、返回值、输出等
分享到:
相关推荐
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...
sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
SqlServer存储过程的导出导入 近日在研究SQL的存储过程,这里我陆续将我在使用存储过程中碰到的问题及解决办法发布到网上,请各位大虾指正。 SqlServer存储过程的导出导入,网上相关资料特别少,经过摸索,这里写...
创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出...
1、资料包含了作者编写的实际应用场景中使用的存储过程代码,共计118个案例,有完整注释说明。旨在帮助读者通过案例学习,快速掌握存储过程的应用方法和技巧。 2、博主博客:...
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
birt报表中调用存储过程的方法. 目录 1. 概述 3 2. BIRT支持的存储过程返回值类型 3 3. BIRT调用存储过程的语法 4 4. 创建存储过程数据源/集 4 5. 在BIRT中使用存储过程 5 调用返回单结果集的存储过程。 5 调用...
阅读实验教材《SQL Server 2012数据库管理与开发》第137页到155页的内容,掌握存储过程的概念、了解存储过程的类别(系统存储过程,用户自定义存储过程,扩展存储过程);掌握存储过程的建立;掌握存储过程的两种...
存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程
本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...
创建存储过程1 课程目标 1)了解 ——存储过程的优点; 2)理解 —— 存储过程的概念; 3)掌握 —— 存储过程的创建方法; 存储过程优点 使用存储过程的优点有: (1)存储过程在服务器端运行,执行速度快。 (2)...
可以将SQL Server存储过程转为oracle存储过程的工具
db2 存储过程 db2 存储过程 db2 存储过程
oracle 存储过程实例 oracle存储过程实例
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
SAP HANA 中调试存储过程 SAP HANA 中调试存储过程 SAP HANA 中调试存储过程
1、 基本完全代替编写存储过程的工作任务。 2、 让不会写存储过程的测试人员,也可顺利完成加压测试工作。 3、 让会写存储过程的测试人员,短时间内完成存储过程编写。 4、 可生成现行业主流的不同数据库类型的存储...
java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程