ORACLE存储过程基础知识

Oracle存储过程开发规范与技巧 为了提高可读性,应该使用一定数量的注释。注释大约占总行数的1/5。 1:注释风格:注释单独成行、放在语句前面。 2:应对不易理解的分支条件表达式加注释; 立即下载
   一. 概述

  Oracle存储过程开发的要点是:

  • 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储过程;

  • 在Oracle数据库中创建一个存储过程;

  • 在Oracle数据库中使用SQL*Plus工具运行存储过程;

  • 在Oracle数据库中修改存储过程;

  • 通过编译错误调试存储过程;

  • 删除存储过程;

  二.环境配置

  包括以下内容:

  • 一个文本编辑器Notepad;

  • Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 语句到Oracle database。

  • Oracle 10g express数据库,它是免费使用的版本;

  需要的技巧:

  • SQL基础知识,包括插入、修改、删除等

  • 使用Oracle's SQL*Plus工具的基本技巧;

  • 使用Oracle's PL/SQL 编程语言的基本技巧;

  三.写一个存储过程

  存储过程使用Oracle's PL/SQL 程序语言编写,让我们写一个什么工作都不做的存储过程,我们可以编译和运行它而不用担心会对数据库产生任何损害。

  在Notepad, 写下:

  CREATE OR REPLACE PROCEDURE skeleton

  IS

  BEGIN

  NULL;

  END;

  把文件存为skeleton.sql.

  让我们一行行遍历这个存储过程:

  1 CREATE OR REPLACE PROCEDURE skeleton

  2 IS

  3 BEGIN

  4 NULL;

  5 END;

  行1:

  CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;

  行2:

  IS关键词表明后面将跟随一个PL/SQL体。

  行3:

  BEGIN关键词表明PL/SQL体的开始。

  行4:

  NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;

  行5:

  END关键词表明PL/SQL体的结束

  四.创建一个存储过程

  SQL语句CREATE OR REPLACE PROCEDURE在Oracle数据库中创建、编译和保存一个存储过程。

  从Window打开SQL*Plus并且从SQL*Plus登录到你的数据库;打开skeleton.sql文件.

  在SQL>命令提示符下输入以下命令:

  SQL>@skeleton

  SQL>/

  SQL*Plus装载skeleton.sql文件的内容到SQL*Plus缓冲区并且执行SQL*Plus语句;SQL*Plus 会通知你存储过程已经被成功地创建。

  现在你的存储过程被创建,编译和保存在你的Oracle数据库,我们可以运行它。

  五.运行一个存储过程

  从SQL*Plus 命令行提示符运行你的存储过程使用EXECUTE命令,如下:

  SQL> EXECUTE skeleton;

  SQL*Plus 输出一下信息确信存储过程成功执行: PL/SQL procedure successfully completed.

  你也可以在一个无名PL/SQL块内运行你的存储过程,在SQL*Plus命令提示符下,它看起来像:

  SQL> BEGIN

  2 SKELETON;

  3 END;

  4 /

  现在我们已经运行了我们的存储过程,我们如何修改它呢?

  六.修改一个存储过程

  让我们写一个输出字符串“Hello World!”的存储过程,用Notepad打开你的skeleton.sql 文件,. 用DBMS_OUTPUT.PUT_LINE 过程调用去替换NULL语句,如下所示:

  CREATE OR REPLACE PROCEDURE skeleton

  IS

  BEGIN

  DBMS_OUTPUT.PUT_LINE('Hello World!');

  END;

  保存到文件skeleton.sql.

  从SQL*Plus命令行, 打开文件skeleton.sql .

  SQL> @skeleton

  SQL>

  1 CREATE OR REPLACE PROCEDURE skeleton

  2 IS

  3 BEGIN

  4 DBMS_OUTPUT.PUT_LINE('Hello World!');

  5* END;

  SQL> /

  SQL*Plus 通知你存储过程成功创建并输出提示信息:Procedure created.

  SQL>

  用EXECUTE 命令运行你的存储过程:

  SQL> EXECUTE skeleton;

  SQL*Plus显示存储过程运行成功:PL/SQL procedure successfully completed.

  我们想要的输出字符串 "Hello World!"没有出来,在显示一个DBMS_OUTPUT.PUT_LINE 结果前需要运行一个SET命令,在SQL*Plus 命令行提示符,键入:

  SQL> SET SERVEROUTPUT ON

  再次执行你的存储过程:

  SQL> EXECUTE skeleton;

  现在结果输出了:Hello World!

  PL/SQL procedure successfully completed.

  七.调试一个存储过程

  当调试一个存储过程时,遵循一样的步骤,修改SQL文件,创建存储过程,执行存储过程,根据编译器反馈的出错信息进行修改,这一步是非常繁琐的,需要依靠经验。

  在实际的商用存储过程的开发调试过程中,由于涉及很多表、类型、光标、循环、条件等复杂的逻辑,和PL/SQL语句的灵活运用,编译时会产生很多错误提示信息,程序员在根据这些错误信息定位,进行修正,再编译最后得到正确的结构;

  八.放弃一个存储过程

  如果在数据库中你不在需要一个存储过程你可以删除它,SQL语句 DROP PROCEDURE 完成从数据库中删除一个存储过程,DROP PROCEDURE 在SQL中被归类为数据定义语言(DDL) 类操作,其他的例子有CREATE, ALTER, RENAME 和TRUNCATE。.

  在SQL*Plus 命令提示符下,使用DROP PROCEDURE SQL 语句删除你的叫做skeleton的存储过程:

  SQL> DROP PROCEDURE skeleton;

  SQL*Plus assures us the procedure has been removed:

  Procedure dropped.

  总结

  本文详细讨论了如何使用Oracle工具开发Oracle商用存储过程的步骤。最后在存储过程的使用中可能是程序直接调用,也可能被触发器调用。


2023华为od机试C卷【最富裕的小家庭】C++ 实现 在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。 阅读详情

相关推荐

群晖Web Station实战:从零搭建个人静态导航站

本文详细介绍了如何利用群晖NAS自带的Web Station套件,从零开始搭建个人静态导航站。通过安装Web Station、上传静态网站源码、配置网页服务与网络门户等步骤,无需代码基础即可实现内网访问。文章还分享了文件权限设置、个性化定制及常见问题排查等实用技巧,帮助用户高效管理个人常用网址,充分挖掘NAS的服务器潜能。

tea88的博客 1330

MySql使用存储过程开发

使用存储过程解决数据处理问题,很多变化频繁的业务逻辑,如果通过存储过程实现,在变更时,就会显得特别简单和方便。只要通过发布脚本就可实现。不得不说,当年,通过Microsoft SqlServer开发数据库及报表应用,是真的好用。多年后的今天,发现如今的数据库应用是MySql的天下了,免费开源是真香,使用第三方工具进行MySql的开发还是不错的............

all_night_in的博客 1791

Unity 多线程编程笔记 _Task详解

士大夫

weixin_43405845的博客 4384

数据库开发(存储过程)

1、创建存储过程。 (1)创建无参数的存储过程。 --创建无参数的存储过程 create proc up_stu as select * from student where sex=1 --执行存储过程 exec up_stu (2)创建有参数的存储过程。 --创建有参数的存储过程 create proc up_stu2 @sno char(7) as if exists (sel...

专注Java后端技术干货、项目源码总结分享,期待您的关注。 1365

Lucene学习总结之二:Lucene的总体架构

Lucene总的来说是: 一个高效的,可扩展的,全文检索库。 全部用Java实现,无须配置。 仅支持纯文本文件的索引(Indexing)和搜索(Search)。 不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。 在Lucene in action中,Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程,包

forfuture1978的专栏 1万+

古月学院《如何在Gazebo中实现阿克曼转向车的仿真》课程资料在ROS Noetic版本中运行时的常见错误及解决方法

   最近想在Gazebo中开发一些仿真内容,于是购买了古月学院的《如何在Gazebo中实现阿克曼转向车的仿真》课程,但是由于ROS 版本的更新,拿到手的课程资料不能直接在ROS Noetic版本中运行,经过我这几天的探索,对遇到的错误及解决方法进行了整理,方便后面购买课程的小伙伴更快的成功运行程序    在文章正式开始之前,先放一下我之前为了寻找该资料报错的原因,而写的两篇与该课程相关的文章链接,感兴趣的可以自行阅读    以阿克曼转向车为例对URDF和XACRO文件进行解读(点击可跳转)    将x

慕羽★的博客 5973

如何开发ORACLE存储过程

 在我的上一个银行项目中,我接到编写ORACLE存储过程的任务,我是程序员,脑袋里只有一些如何使用CALLABLE接口调用存储过程的经验,一时不知如何下手,我查阅了一些资料,通过实践发现编写ORACLE存储过程是非常不容易的工作,即使上路以后,调试和验证非常麻烦。简单地讲,Oracle存储过程就是存储在Oracle数据库中的一个程序。  一. 概述  Oracle存储过程开发的要点是:

5976

2026年数字IC设计禾赛科技笔试带答案解析

本文介绍了一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含15道单选题(30分)、10道填空题(20分)和5道简答/编程题(50分),总分100分,考试时长120分钟。单选题涉及同步时序电路、Verilog语法、跨时钟域设计、FPGA优化、存储器层次、功耗优化等知识点;填空题考查环形振荡器、工艺参数、时序约束、LUT结构等基础概念。试题重点考察应聘者对数字电路设计核心概念的理解和实际工程应用能力,特别是针对激光雷达芯片设计中的关键技术点进行考核。

Open 123

数据开发-Oracle存储过程

Oracle存储过程 1.执行并打印执行存储过程 F9:测试 Ctrl+N:单步进入 2.创建游标并遍历游标进行查询 3.判断语句 4.循环语句 5.导出json文件 6.导出csv文件 7.存储函数 一般来讲,过程和函数的区别在于函数可以有一个返回值;而过程没有返回值。 但过程和函数都可以通过out指定一个或多个输出参数,我们可以利用out参数,在过程和函数中实现返回多个值。 --查询某个员工的年收入 create or replace function q

暗夜星痕的博客 560

编程实践:寒武纪-LLM&VLM模型量化&部署

本文介绍了在MLU370-S4平台上对大模型(LLM/VLM)进行量化的两种方法:SmoothQuant和WeightOnly。以Qwen2-VL-2B模型为例,详细说明了两种量化方式的命令行参数配置,包括必须设置的per_channel选项和量化参数调整建议。量化完成后,提供了模型部署的具体命令示例,包含设备分配、端口设置、并行度等关键参数。文章强调在MLU370芯片上需要手动设置block_size,并指出两种量化方式只能二选一使用。配套资料已上传至百度网盘供参考。

微风❤水墨 505

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2498

Oracle存储过程

使用普通变量定义方式,需要知道表中列的类型,而使用引用类型,不需要考虑列的类型,使用%TYPE是非常好的编程风格,因为引用型变量更加灵活。

猪之仆的博客 6541

Docker:快速部署 Temporal 工作流引擎的技术指南

Temporal是一个开源的分布式工作流引擎,适用于复杂业务流程(如订单处理、支付流程等),提供状态持久化、自动重试、多语言SDK支持等特性。部署简单,支持Docker Compose,包含核心服务、Web UI及数据库。以TypeScript为例,开发者可快速编写工作流(如订单处理)和Worker,通过CLI或SDK启动和管理。Temporal简化了分布式系统的可靠性设计,适合电商、自动化任务等场景。

木头 640

Oracle存储过程基础知识

使用DBMS_SQL中,如果要执行的动态语句不是查询语句,使用DBMS_SQL.Execute或DBMS_SQL.Variable_Value来执行,如果要执行动态语句是查询语句,则要使用DBMS_SQL.define_column定义输出变量,然后使用DBMS_SQL.Execute, DBMS_SQL.Fetch_Rows, DBMS_SQL.Column_Value及DBMS_SQL.Variable_Value来执行查询并得到结果。

175

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

oracle 存储过程基础知识

oracle 存储过程基础知识

Sandy_lss的博客 1026

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

oracle基础知识积累-创建存储过程

场景: 基础知识查询 动机: 纯粹基础知识积累,便于后续查询.在很多场合,负责人们都在谈论去IOE话题, 所以,难免使用场合会或多或少会减少,于是按照习惯的思路记录一下. 环境: Oracle Database 11g; PL/SQL Developer 1.不带参数存储过程 CREATE OR REPLACE PROCEDURE PRO_INSERT_INFO IS...

zhangbeizhen18的博客 276

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

oracle存储过程基础知识

商业规则和业务逻辑可以通过程序存储在oracle中,这个程序就是存储过程。 存储过程是SQL, PL/SQL, JAVA 语句的组合, 它使你能将执行商业规则的代码从从你的应用程序中移动到数据库。这样的结果就是,代码存储一次但是能够被多个程序使用。 要创建一个 过程对象(procedural object),必须有 CREATE PROCEDURE 系统权限。如果这个过程对象需要被其他的用户sc...

jelly 237

Oracle存储过程的学习(基础知识)

ORACLE中存储过程学习 存储过程:可以理解为Java语言中的方法或函数。 工具:PL/SQL 注:存储过程中不区分大小写 一、程序结构介绍 1.1 打印hello word 创建测试窗口 -- Created on 2020/7/2 by 86152 declare -- Local variables here -- 声明变量,游标,不需要可以省略 i integer; begin -- Test statements here -- 执行语句 Dbms_Output.

weixin_44588243的博客 997

oracle 存储过程基础知识1

CREATE PROCEDURE51Testing软件测试网/*H||0THXQ6k创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。也可以创建在 Microsoft SQL Server启动时自动运行的存

langxiaodi的专栏 595

oracle存储过程读取文件内容,oracle存储过程基础知识

一、创建存储过程一个例子:create or replace procedure CreateTablesByEnterpriseId(EnterpriseId in string) istrSql varchar2(4800) := '';exitObj int := 0;v_Job NUMBER :=0; JobNum NUMBER(5) := 0;JobID NUMBER(5) := 0;b...

weixin_29669899的博客 735

oracle数据库存储过程基础知识

工具pl/sql developer 1. 创建数据库存储过程(程序窗口 program window)   1).无参数的存储过程     create [or replace] procedure  存储过程名  is/as       declare --声明变量的标识(可以写也可以不写)      变量名   变量类型(值范围);      变量名 变量类型(值范围)  :=值...

lk_0518的博客 849

ORACLE 有关存储过程的一些基础知识

1.基本结构CREATE OR REPLACE PROCEDURE 存储过程名字(参数1 IN NUMBER,参数2 IN NUMBER) IS变量1 INTEGER :=0;变量2 DATE;BEGIN END 存储过程名字2.SELECT INTO STATEMENT将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO...

weixin_33932129的博客 139

oracle 存储过程基础知识2

说明 在升级过程中,SQL Server 利用存储在 syscomments 中的加密注释来重新创建加密过程。 FOR REPLICATION 指定不能在订阅服务器上执行为复制创建的存储过程。.使用 FOR REPLICATION 选项创建的存储过程可用作存储过程筛选,且只能在复制过程中执行。本选项不能和 WITH RECOMPILE 选

langxiaodi的专栏 1108

oracle基础知识总结 part 3 : 三范式,PLSQL,存储过程,函数,触发器

关于“oracle基础知识总结”系列博客的说明: 1 本系列博客是在本人学习过程中总结的笔记,学习资料为尚学堂马士兵老师的oracle视频,大部分示例来自于该资料; 2 做为数据库初学者,本系列博客主要讲解了oracle的基础知识,高手勿入勿喷; 3 由于是学习笔记,主要作用是便于本人以后复习和备忘。可能条理不是很清晰,上下文衔接的不是很好,请读本文的读者做好心理准备; 4

昨夜星辰的博客 3004

oracle 存储过程基础知识3

引用对象SQL Server允许创建的存储过程引用尚不存在的对象。在创建时,只进行语法检查。执行时,如果高速缓存中尚无有效的计划,则编译存储过程以生成执行计划。只有在编译过程中才解析存储过程中引用的所有对象。因此,如果语法正确的存储过程引用了不存在的对象,则仍可以成功创建,但在运行时将失败,因为所引用的对象不存在。有关更多信息,请参见延迟名称解析和编译。51Testing软件测

langxiaodi的专栏 1256

Oracle Procedure存储过程中遇到的一些基础知识

创建存储过程 create or replace procedure test(var_name_1 in varchar2,var_name_2 out integer) as –声明变量(变量名 变量类型) begin –存储过程的执行体 end test; 其中 in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。 out模式定义的参数只能在过程体内部赋值,...

u010574271的博客 305
上一篇: Oracle_C# 实现 Oracle Text(全文检索)的一个简单例子
下一篇: Oracle存储过程基本语法
OilAlways
博客等级 码龄17年 57粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值