ORACLE存储过程的创建和执行的简单示例和一些注意点
此示例的主要目的主要是为了了解在PL/SQL环境下怎么创建和执行存储过程。
存储过程所涉及的DataTable:

第一步:创建游标变量
游标是ORACLE系统在内存中开辟的一个工作区,主要用来存储SELECT的数据的。通俗的讲就是用来存储查询数据的一个临时的变量。
游标的创建:
CREATE OR REPLACE PACKAGE pkg_query AS TYPE cur_query IS REF CURSOR;
END pkg_query;
第二步:存储过程的创建
create or replace procedure PRO_TestDemo(p_name in NVARCHAR2,
p_datacount out VARCHAR2,
p_cur out pkg_query.cur_query) is
v_sql VARCHAR2(1000) := ''; --用来存储SQL语句的变量
v_datacount number := 0; --用来存放受影响的条数
begin
IF p_name IS NOT NULL OR p_name <> '' THEN
v_sql := 'SELECT COUNT(*) FROM TEST1 a WHERE a.name=' || p_name;
EXECUTE IMMEDIATE v_sql
INTO v_datacount;
IF (v_datacount > 0) THEN --这边的判断是为了避免不必要的语句执行
v_sql := 'SELECT * FROM TEST1 a WHERE a.name=' || p_name;
OPEN p_cur FOR v_sql;
END IF;
END IF;
end PRO_TestDemo;
创建的时候涉及了一些PL/SQL的基本语法。
如: := 为赋值,||为拼接。
in 是输入参数,out 是输出参数。
编程规范:参数尽量使用p_变量名,变量使用v_变量名。
第三步:测试执行存储过程
PL/SQL内置了测试存储过程的快捷方式。右键待测试的存储过程->测试
出现如下所示的界面:

如果是字符型数据字段输入的必须是 ‘ data’,否则如果执行到SELECT 就会报错;执行完点击p_cur最右边的红色方框就可以看出输出参数的数据了。
PL/SQL本身也是有调试功能的。
ORACLE存储过程的创建和执行的简单示例和一些注意点的更多相关文章
- 在ORACLE存储过程中创建临时表
在ORACLE存储过程中创建临时表 存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截 ...
- Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER
关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...
- 2019-03-19 SQL Server简单存储过程的创建 删除 执行
--创建名为 Get 的有输入参数的存储过程 create proc Get --设置默认值 @TrustId int ='001' as begin select * from [DealStruc ...
- Oracle 存储过程的创建,及触发器调用存储过程
一.创建存储过程 1.存储过程写法 create or replace procedure HVM_BYQ_TJ --变压器统计信息--->入库 (id in number) as begin ...
- Oracle存储过程的调用和执行
1.什么是存储过程: 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2.无参存储过程的使用: Normal 0 7.8 磅 0 2 fals ...
- sqlserver 带输出参数的存储过程的创建与执行
创建 use StudentManager go if exists(select * from sysobjects where name='usp_ScoreQuery4') drop proce ...
- 在oracle存储过程中创建暂时表
在oracle的存储过程中,不能直接使用DDL语句,比方create.alter.drop.truncate等. 那假设我们想在存储过程中建立一张暂时表就仅仅能使用动态sql语句了: create o ...
- oracle存储过程的创建和使用
创建存储过程: 格式:create or replace procedure procedure_name(参数 参数类型) Is/as 变量1 变量1的类型: begin ----------业务逻 ...
- T-SQL 有参数存储过程的创建与执行
use StudentManager go if exists(select * from sysobjects where name='usp_ScoreQuery2') drop procedur ...
随机推荐
- 自己写的Weblogic的poc
""" 暂时只试用于Linux,先试试用一下反弹shell CVE-2017-10271的EXp """ import requests i ...
- 【JZOJ5264】化学
Description Input Output Sample Input 3 10 1 2 10 Sample Output 5 Hint 题解: 这个题目通过30%部分分的提示,我们可以猜出这 ...
- 如何使用Externalizable接口自定义Java中的序列化
Java序列化过程的缺点 我们都知道如何使用Serializable接口序列化/反序列化一个对象,并且如何使用writeObject 和readObject方法自定义序列化过程. 但是这些自定义还不够 ...
- C#学习--SQL server数据库基本操作(连接、增、删、改、查)封装
写在前面: 在日常的工作中,通常一个项目会大量用的数据库的各种基本操作,因此小编几个常见的数据库的操作封装成了一个dll方便后续的开发使用.SQLserver数据库是最为常见的一种数据库,本文则主要是 ...
- Python爬虫工程师必学——App数据抓取实战 ✌✌
Python爬虫工程师必学——App数据抓取实战 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统 ...
- VMware15.5版本下安装CentOS_7_64bit
本文介绍在VMware15.5版本下安装CentOS7. 工具准备: 1.VMware15.5版本 2.CentOS 7 64bit ISO镜像文件 一.创建虚拟机 这部分请参照我的另一个博客“一.新 ...
- windows自带的netsh的使用
0x01netsh简介 自Windows XP开始,Windows中就内置网络端口转发的功能.任何传入到本地端口的TCP连接(IPv4或IPv6)都可以被重定向到另一个本地端口,或远程计算机上的端口, ...
- sqlserver 查看最耗时的前10个存储过程
SELECT TOP OBJECT_NAME(a.object_id,database_id) SP_Name, DB_NAME(a.database_id) Database_Name, a.cac ...
- java学习6-java基础类库
1.与用户互动 2.系统相关 3.常用类 4.日期.时间类
- Mysql面试题及千万级数据查询优化
今天在说Mysql查询优化之前,我先说一个常见的面试题,并带着问题深入探讨研究.这样会让大家有更深入的理解. 一,Mysql数据库中一个表里有一千多万条数据,怎么快速的查出第900万条后的100条数据 ...