oracle快捷语句框架中,Oracle框架:PL/SQL编程:

PL/SQL编程

一:什么是PL/SQL

(1.)PL/SQL体系结构:

PL/SQL引擎用来编译和执行,PL/SQL块或子程序,该引擎驻留在Oracle服务器中。

(2.)PL/SQL块简介

PL/SQL是一种块结构语音,它将一组语句块放在一个快中。

(3.)运算符和表达式:

PL/SQL语音支持操作符包含关系运算符,一般运算符和逻辑运算符,与SQL语音类似。

(4.)常量和变量声明

在PL/SQL块的可执行部分引用变量和常量前,必须先对其进行声明。变量和PL/SQL块的部分声明,在PL/SQ块的 可执行部分被使用。语法如下:

Variable_name data_type 变量范围 变量的初始值;

(5.)注释:

在PL/SQL可以使用如下两种注释符号:

‘--’双减号

‘//’

在PL/SQL快中的可执行部分引用的变量和常量前,必须先对其声明

语法:variable_name data_type[(size)][:=init_value];

变量名称 数据类型 size 指定变量的初始值

二:PL/SQL数据类型

(1.)Oracle使用变量类型图

(2.)LOB数据类型

(3.)属性类型:

%Type:定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致这时可以使用%Type (优点:可以不必知道所引用的数据库列的数据类型。所引用的数据类型可以实现时改变,容易保持一致,不必修改PL/SQL程序)

%ROWTYPE:返回一个记录类型,其数据类型和数据库表的数据结构相一致,这时可以使用%ROWTYPE.(优点:可以不必知道所引用数据库列的个数和数据类型。所引用的数据库中列的个数和数据库类型可以实现改变,容易保持一致,不用修改PL/SQL程序)

三:PL/SQL控制语句

(1.)条件控制:if语句如下:

If 布尔表达式 then

PL/SQL和SQL语句

End if;

If 布尔表达式 then

PL/SQL和SQL语句

Elst

其他语句

End if;

If 布尔表达式 then

PL/SQL和SQL语句

Elsif 其他布尔表达式 then

其他语句

Elsif 其他布尔表达式 then

Else

其他语句

End if;

(2.)case 语法如下

----------------格式1----------------

Case 条件表达式

When 条件表达式1 then

语句段1

When 条件表达式2 then

语句段2

…………….

When 条件表达式n then

语句段n

End case;

----------------格式2----------------

Case 条件表达式

When 条件表达式1 then

语句段1

When 条件表达式2 then

语句段2

…………….

When 条件表达式n then

语句段n

Else 语句段

End case;

(3.)循环控制:Loop循环语法如下:

Loop

要执行的语句;

Exit when 条件语句 -------条件满足时跳出循环

End loop;

While循环语法如下:

While 布尔表达式 loop

要执行的语句;

End loop;

For循环语法如下

For 循环计数器 In reverse 下限…….上限 loop

要执行的语句

End loop;

四:异常处理:

(1.)预定义异常:

(2.)处理用户自定义异常:

在PL/SQL块的定义部分定义的异常情况

异常情况 exceptlon

抛出异常情况:

Raise 异常情况

在PL/SQL块的异常情况处理部分对异常情况做出的相应处理

五:游标:

(2.)游标的分类

隐式游标:返回单行记录

显示游标:返回多行记录

显示游标使用步骤:

(1.)声明游标:cursor 名称 is

(2.)打开游标:open 名称;

(3.)提取游标:fetch 名称 into variables;

(4.)关闭游标: close 名称;

(3.)使用循环游标简化游标的读取语法:

For 声明记录变量 in 名称

Loop

Executable_statements

End loop;

(4.)No_data_found和notfound的区别

Select………into语句返回0条记录和多条记录是触发no_data_found

当update或delete语句的where子句未找到时,触发%notfound

在提取循环中用%notfound或%found来确定循环的退出条件,而不用no_data_fuond

六:存储过程:

子程序的组成:

(1.)声明部分:类型,游标,常量,变量,异常,嵌套子程序声明

(2.)可执行部分:可执行部分包括赋值,控制执行过程存储过程中出现的异常

(3.)异常处理部分:异常处理程序,负责处理执行存储过程中出现的异常。

子程序的优点如下:

模块化,可重用性,可维护性,安全性。

(4.)存储过程用法:

1.创建存储过程:语法如下:

Create 语句 procedure 存储名称

参数列表

Is|as

局部声明

Begin

可执行语句

exception

异常处理程序

End 存储名称;

2.调用存储过程

(1.)用命令调用

语法如下:

Exce 过程名称 参数列表;

(2.)参数的传递方式三种:

按位置传递

Exec add_emp(1111,‘mary’,2000,’‘manager’,10);

按名称传递

混合方式传递

3.存储过程参数模式语法如下:

存储名称 in|out|in out datatype :=赋值;

4.存储过程访问权限

-----授予a执行emp的权限

Grant execute no add_emp to a

-------撤销权限

Revoke execute on add_emp from a;

5.删除存储过程

Drop procedure 存储名称;

七:存储过程的调试与跟踪:

(1.)在sql*plus下调试

(2.)用户PL/SQL Developer工具调试

其中on_flag有三种情况:

0表示过程执行成功但无提示信息。大于0表示过程执行成功但有提示信息。

*小于1表示过程执行失败且有提示信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

logisticregression参数_通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战...

前情提要:通俗地说逻辑回归【Logistic regression】算法(一) 逻辑回归模型原理介绍上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklearn 逻辑回归模型的参数&#…

tensorflow适用于python版本_tensorflow用python哪个版本更好?

tensorflow用python哪个版本?一、安装anaconda tensorflow是基于python脚本语言的,因此需要安装python, 当然还需要安装numpy、scipy、six、matplotlib等几十个扩展包。如果一个个安装,装到啥时候去?(我曾经光安装scip…

php parse url ctf,【SSRF】如何绕过filter_var(), preg_match() 和 parse_url()

0x01 前言这篇文章是在我看完一片国外安全大佬写的文章后对其进行总结并翻译得到的。0x02 正文之绕过filter_var和preg_match本片文章主要深入一种php ssrf的技术——如何绕过例如filter_var(), preg_match()和parse_url()等函数。本次我进行测试的php版本全部为php v5.6.30php…

python json解析_python读取json文件并解析

原博文 2018-07-09 18:35 − # -*- coding: utf-8 -*- import os import json import sys reload(sys) sys.setdefaultencoding(utf-8) filelistos.listdir(E:\\log\\files\\) for ite... 相关推荐 2019-12-05 20:03 − 如何使用 Python 语言来编码和解码 JSON 对象。 JSON(Jav…

oracle进程瞬间暴增,oracle goldengate ogg 源段传输进程lag延迟不断增加的原因?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼了解GoldenGate中LAG的含义GGSCI中显示的LAG代表 事务被写入到磁盘介质中的时刻例如Oracle中redo被写入到online redo logfile中 和 Replicat将同一个事务分发到目标数据库的时刻 之间的时间间隔。通俗地说,一个事务内的…

python中文词云图代码_Python简单实现词云图代码及步骤解析

一、安装 wordcloud pip install wordcloud 二、加载包、设置路径 import os from wordcloud import WordCloud import matplotlib.pyplot as plt os.chdir(E:\\pyspace\\tmp) 三、词云图示例 1、默认参数示例 text Keep it simple and stupid. wc WordCloud() # 实例化词云图…

linux 命令 空格转义,在Linux中,如何转义SCP复制路径中的空格?

问题描述我是Linux新手,我想将文件从远程复制到本地系统…现在,我在Linux系统中使用scp命令。当我尝试将其复制时,我有一些文件夹或文件名带有空格文件,它显示错误消息:“没有这样的文件或目录”我试过了:s…

usb大容量存储设备驱动程序_20年历史了!为什么USB接口还存在?网友:原来如此...

USB接口作为计算机领域应用最广泛的数据接口,已有20多年的历史。和它的名字一样,USB(Universal Serial Bus)最初也是为统一的数据接口而设计的。你几乎可以用它来代替计算机的各种外部数据接口,只需为它设计相应的驱动程序。随着市场对USB接口…

linux终端炫酷命令,你不得不知道11个炫酷的 Linux 终端命令

很多朋友都很喜欢Linux ,Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统,Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可…

lasso回归_一文读懂线性回归、岭回归和Lasso回归

(图片由AI科技大本营付费下载自视觉中国)作者 | 文杰编辑 | yuquanle本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失,然后介绍了线性回归中常用的两种范数来解决过拟合和…

springcloud架构特点_打造企业级微服务平台架构,分布式应用场景管理

微服务平台架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务。微服务系统可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我…

linux 看防火墙的启停日志,LINUX下防火墙iptables的日志管理

iptables的日志(log)由syslogd纪录和管理。初始存放在 /var/log/messages里面。自动采取循环纪录(rotation)的方式记录。但是由于混在 messages中,对于管理和监视产生了不便。这里,我简单介绍一下我的 iptables日志的管理,循环,和…

怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 5 迅速判断回文串的Manacher算法...

本文始发于个人公众号: TechFlow题意Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Link: https://leetcode.com/problems/longest-palindromic-substring/翻译给定一个字符串s&#xff0c…

linux内核没有iobuf,LINUX2.6.26.6内核下双口RAM的驱动函数测试成功!

驱动程序:#include //#include #include #include #include #include #include #include //#include #include //#include #include #include #include #include //#include #include #include #include #include #include #include #include MODULE_LICENSE("…

spring和mybatis结合做简单的增删查改系统_springbootamp;amp;vue简单的景点信息管理系统...

springboot&&vue简单的景点信息管理系统这两天闲着没有什么事,就根据陈哥的教程,试着写了一个springboot和vue的简单的景点信息管理系统。也就大致实现了最基本的增删查改。先看看效果图吧:1、登陆界面: 2、注册界面&…

linux 内核 丢弃分片包,LINUX内核关于IP分片重组问题请教

最近研究学习IP分片重组,也拜读了不少dx的阅读理解。可还是有疑问,请教xdm。源代码:linux-2.4.26\linux-2.4.26\net\ipv4\ip_fragment.cIP分片的重组大概经过以下几个函数:0/ ip_defrag1/ ip_find-->ip_frag_create-->ip_frag_intern2/…

spark算子_十、Spark之详解Action类算子

常用Action类算子列表reduce(func): 通过func函数来对RDD中所有元素进行聚合运算,先运算分区内数据,再运算分区间数据。scala> val rdd1 sc.makeRDD(1 to 100)rdd1: org.apache.spark.rdd.RDD[Int] ParallelCollectionRDD[4] at makeRDD at :24# 对…

linux 库函数 劫持,Linux hook技术之-Ring3下动态链接库.so函数劫持

劫持普通函数当然没有什么意思了!我们要劫持的是系统函数!我们知道,Unix操作系统中对于GCC而言,默认情况下,所编译的程序中对标准C函数(fopen、printf、execv家族等等函数)的链接,都是通过动态链接方式来链…

await原理 js_「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能

本周,Nodejs v14.3.0 发布。这个版本包括添加顶级 Await、REPL 增强等功能。REPL 增强通过自动补全改进对 REPL 的预览支持,例如,下图中当输入 process.ver 之后,不需要输入剩下的实际内容,它帮我们生成了自动补全的输…

在linux安装requests库命令,在Linux--Ubuntu18.04环境下安装requests库

之前在服务器上装过requests库,但是记忆中花了好大的力气才成功,现在因为一次意外,服务器重装系统,现在这些乱七八糟的库又要重装一遍,与上次不同的是,这次我装一遍就成功了。现在分享一下成功的经历。Pyth…