新手学PL/SQL (1)

PL/SQL程序基础1 PL/SQL程序基础1 一.实验目标1、针对数据库应用领域的数据需求,设计出基于Oracle数据库的解决方案的能力;2、承担Oracle数据库系统的实施、运行与维护等基本工作的能力。二.实验项目三.实验错误解决方案问题一:创建的过程带有编译错误问题 一.实验目标 掌握PL/SQL程序的基本结构编程,具备如下能力: 1、针对数据库应用领域的数据需求,设计出基于Oracle数据库的解决方案的能力; 2... 阅读详情

最近不时需要写一些PL/SQL语句,对这东西不熟悉,有时候搞得挺晕,摘一些小知识点,以备查用,错误的地方,各位多多批评指正:

 

//日期格式化:

to_date('2006-11-20 16:35:00','yyyy-mm-dd hh24:mi:ss')

 

//取子串,第二个参数表示从原串的何处起取,第三个参数指子串长度:

substr('abcdef',1,4)

substr('ab',1,4)= 'ab'

 

//日期截取,即截取时间,保留时间部分:

trunc(sysdate)

 

//日期的加减:

trunc(sysdate)-1  前一天

trunc(sysdate)-1/(24*60*60)  前一秒

to_number(trunc(sysdate)-begintime)*1440  计算时间差,单位:分钟

 

//四舍五入:

round(2.555)=2

round(2.555,2)=2.56

 

//case语句:

case when sysdate>MyTable.cleartime

then ……

else

……

end

 

case MyTable.objid when 'hmy'

then ……

else

……

end

 

//decode函数,类似于三元运算符:

decode(MyTable.price,null,0, MyTable.price)  如果price为null,返回0

具体的语法格式如下:

DECODE(input_value,value,result[,value,result…][,default_result]);

 

//常见的比率计算示例:

Select to_char(round(sum(decode(isactive,0,1,0))/count(isactive)*100,2))||'%' from ……

 

//在字符串类型数据判等时,如果是char 或nchar,注意多余的空格

 

//判断交集:

如何判断两个时间段有交集,starttime_1= = =endtime_1, starttime_2= = =endtime_2

where least(endtime_1, endtime_2) >greatest(starttime_1, starttime_2)

 

//打印输出

dbms_output.put_line('……');

 

//存储过程:

(1)从最简单的存储过程例子开始:

create or replace procedure MyProc

as

begin

  delete from MyTable;

end;

// oracle中可以使用replace,方便多了。as亦可用is。

 

(2)带上参数:

create or replace procedure MyProc(p_date in date)

as

begin

  delete from MyTable where starttime= p_date;

end;

//in可省去,如有输出参数,应用out.

 

(3)声明变量:

create or replace procedure MyProc

as

v_count number:=0;

begin

select count(*) into v_count from MyTable;

if v_count>0 then

……;

end if;

end;

//变量声明不用declare。变量可以指定默认值。

(“PL/SQL程序”又称“PL/SQL块”,“PL/SQL块”分为过程,函数,触发器等,“PL/SQL块”又分为“带名块”和“匿名块”。“带名块”就是有名字的程序,如上面存储过程“MyProc”,“匿名块”就是没有名字的程序,“带名块”里面以is/as开始定义变量,“匿名块”里面以declare开始来定义变量)

 

(4)声明游标:

create or replace procedure MyProc

as

cursor cursor_1 is

select objid,starttime from MyTable;

c1_row cursor_1%ROWTYPE;

c1_objid MyTable.objid%TYPE;

c1_starttime MyTable.starttime%TYPE;

 

begin

  open cursor_1;

fetch cursor_1 into c1_objid,c1_starttime;

loop

fetch cursor_1 into c1_row;

exit when cursor_ 1%notfound;

  if c1_row.starttime< c1_starttime then

    ……

  end if;

end loop;

close cursor_1

end;

//使用%TYPE可以省去查看列的数据类型的麻烦

//可以使用%ROWTYPE来在游标中表示一行记录。

//游标中常用的属性:%notfound、%found

 

(5)动态游标:

create or replace procedure MyProc

as

v_id varchar2(20);

 

type v_cursor is ref cursor;

cursor_1 v_cursor;

c1_objid MyTable.objid%TYPE;

c1_starttime MyTable.starttime%TYPE;

 

begin

  v_id:=……;

  open cursor_1 for 'select objid,starttime from MyTable where objid=''' || v_id || '''';

……

close cursor_1;

end;

//游标的语句可以动态指定

 

//调试存储过程

不同数据库中对存储过程的调试都是个令人头痛的问题,oracle中如欲调试存储过程,最好有辅助软件,如pl/sql developer。在pl/sql developer可按以下步骤对存储过程进行调试:

一、定位你的procedure

1在屏幕左边的对象浏览器中展开procedure

2找到你的procedure

二、打开测试窗口

1在你的procedure上点击右键

2在弹出的菜单中选择test

3PL/SQL Devoloper就会打开一个测试窗口并自动生成一个调用块

4在测试窗口的下方输入你的procedure的入口参数

三、打开编辑窗口

1在你的procedure上点击右键

2在弹出的菜单中选择edit

3PL/SQL Devoloper就会打开编辑窗口

4在需要的地方设置断点

四、开始调试

1回到调试窗口

2打开debug菜单,你就会看见start项已经可以用了,点击它

3接下来就可以用调试窗口上的按钮进行单步跟踪

 

如果在调试过程中提示“no debug information”,则右键相应的存储过程,选中“add debug information”。

 

//设置定时任务

variable n number;

begin

dbms_job.submit(:n,'MyProc;',sysdate,'sysdate+1/1440');

commit;

end;

//定时执行MyProc存储过程,第隔一分钟执行一次。变量n用于返回该任务在系统中的编号(唯一标识),你可以用语句将它打印出来。

//如果存储过程有参数,则第二个参数改作类似:'MyProc(10);'即可。

(使用Submit()过程,工作被正常地计划好。
这个过程有五个参数:job、what、next_date、interval与no_parse。

PROCEDURE Submit ( job OUT binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)

job
参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
what
参数是将被执行的PL/SQL代码块。
next_date
参数指识何时将运行这个工作。
interval
参数何时这个工作将被重执行。
no_parse
参数指示此工作在提交时或执行时是否应进行语法分析——TRUE
指示此PL/SQL代码在它第一次执行时应进行语法分析,
而FALSE指示本PL/SQL代码应立即进行语法分析)

 

begin

dbms_job.remove(21);

end;

//移除指定编号的任务

 

begin

dbms_job.run(21);

end;

//手动执行一次指定编号的任务

 

select job,next_date,next_sec,failures,broken from user_jobs;

//获取系统中所有的任务信息

 

//如果在使用submit添加任务之后,任务并未自动执行,请检查并将:企业管理器=》数据库==》例程==》配置==》所有初始化参数==》已配置==》job_queue_processes设置为非0,或直接修改文件/oracle/ora90/database/SPFILExxx.ORA(其中xxx是oracle的sid)中的job_queue_processes的值,随后重启数据库。

该参数定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。

滚雪球学Oracle[4.1讲]:PL/SQL编程 在Oracle数据库中,PL/SQL(Procedural Language/SQL)是用于编写复杂业务逻辑的重要工具。PL/SQL不仅扩展了SQL的功能,使其具备了流程控制、异常处理和复杂数据结构的能力,还能够与SQL无缝集成,支持数据库级的编程。掌握PL/SQL编程对于提升Oracle数据库的开发与管理能力至关重要。在上一章中,我们深入探讨了Oracle SQL的基础知识。 阅读详情

相关推荐

【Python Turtle合集】有趣好玩的代码当然要分享给大家啦~(皮卡丘、玫瑰花、小黄人......)

前言 🚀 作者 :“程序员梨子” 🚀 **文章简介 **:本篇文章主要是写了利用Turtle库绘制四种不一样的图案的小程序! 🚀 **文章源码免费获取 : 为了感谢每一个关注我的小可爱💓每篇文章的项目源码都是无 偿分享滴💓👇👇👇👇 点这里蓝色这行字体自取,需要什么源码记得说标题名字哈!私信我也可! 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 正文 今天给大家介绍一个好玩儿的库,嘻嘻! Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵

TZ45678的博客 3万+

Oracle SQL语句操作数字:取整、四舍五入及格式化

用oracle sql对数字进行操作: 取上取整、向下取整、保留N位小数、四舍五入、数字格式化取整(向下取整): select floor(5.534) from dual; select trunc(5.534) from dual; 上面两种用法都可以对数字5.534向下取整,结果为5. 如果要向上取整 ,得到结果为6,则应该用ceil select ceil(5.534)...

鸿观,专注于运维实践,包括容器化、监控等。 1904

433MHz无线通信避坑指南:如何解决信号干扰和误码问题

本文深入探讨433MHz无线通信中的信号干扰和误码问题,提供从射频前端设计到协议优化的全链路解决方案。通过天线匹配、电源噪声抑制、曼彻斯特编码改进及实时频点切换等技术,显著提升通信稳定性和距离。适合智能家居和工业无线控制系统的开发者参考。

weixin_29288313的博客 419

sql 时间 四舍五入 取整5分钟

项目有要求上送整5分钟的时间,00:00:00,00:05:00,00:10:00...(当前时间戳加150s)减去(当前时间戳加150s再取余300s)就是整5分钟了。

qq837468220的专栏 1012

OpenClaw Windows 最详细安装指南

Windows上养龙虾:OpenClaw完整安装教程+钉钉接入,助你养只大龙虾

weixin_43405859的博客 2215

FreeRTOS-Plus-CLI使用笔记

FreeRTOS-Plus-CLI使用笔记 一、简介 详细介绍可参考FreeRTOS-Plus-CLI官网地址入口 FreeRTOS+CLI(Command Line Interface, 命令行接口)提供了一种简单、小型、可扩展且RAM高效的方法,使FreeRTOS应用程序能够处理命令行输入。添加一条指令的步骤如下: 提供一个实现命令功能的函数 将命令映射到该功能函数 注册命令 运行命令解释器 命令行调试接口对于排查分析出现的问题提供了很好的接口,可以通过查看传感器信息判断传感器是否正常,可以查看内置

ApexYuan 6964

psql除法保留小数,向上取整和向下取整

在psql中,使用1/4得到的结果是0,因为/它取得是整数,但是有些场景我们是需要保留小数的,还有些场景需要向上取整,或者四舍五入的。那么今天就总结下psql保留小数的方法。 我用到的方法是类型转换,类似于c中int/int为int类型,而float/int则为float。 select round(1::numeric/4::numeric,2) 将除数被除数转换为numeric类型,保留...

黄油猫 9890

YOLOv8训练流程-原理解析[目标检测理论篇]

本篇文章主要介绍了YOLOv8训练的流程,主要介绍了Task Aligned Assigner正负样本匹配策略以及YOLOv8的损失计算。

ice 4517

数据库基础系列之四:PL/SQL入门

最近不时需要写一些PL/SQL语句,对这东西不熟悉,有时候搞得挺晕,摘一些小知识点,以备查用,错误的地方,各位多多批评指正:   //日期格式化: to_date('2006-11-20 16:35:00','yyyy-mm-dd hh24:mi:ss')   //取子串,第二个参数表示从原串的何处起取,第三个参数指子串长度: substr('abcdef',1,4) substr(...

weixin_34301132的博客 141

基于深度学习的野生菌菇检测识别分类系统(YOLOv8 + UI界面 + 数据集)

随着深度学习技术的迅猛发展,计算机视觉领域的应用得到了广泛的关注。野生菌菇的检测与识别是一个复杂而又有趣的问题,涉及到物体检测、图像分类以及自然语言处理等技术。本文将介绍如何基于YOLOv8模型,结合自定义UI界面与数据集,构建一个高效且精确的野生菌菇检测识别分类系统。首先,我们将介绍YOLOv8的原理与特点,然后详细描述如何构建和训练野生菌菇识别模型,并介绍如何为该系统设计UI界面,最终形成一个完整的系统。本文内容包括代码实现、模型训练及数据集准备等,旨在为有类似需求的开发者提供参考和帮助。目录摘要目录。

YOLO 1547

Android实现自动输入文本效果 (附完整源码)

Android实现自动输入文本效果 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 416

sql 相除取整数,Oracle SQL语句操作数字:取整、四舍五入及格式化

sql 相除取整数,Oracle SQL语句操作数字:取整、四舍五入及格式化

我就叫贝塔 3698

100天精通Python(爬虫篇)——第119天:基于selenium实现隐藏浏览器指纹特征(反反爬策略)

1. 什么是浏览器指纹? 2. 爬虫隐藏浏览器指纹特征的好处? 3. 手动打开浏览器指纹情况 4. 无界面模式打开浏览器 5. 脚本隐藏浏览器指纹特征

努力让自己发光,对的人才能迎着光而来 8万+

新手学PL/SQL

//日期格式化:to_date(2006-11-20 16:35:00,yyyy-mm-dd hh24:mi:ss) //取子串,第二个参数表示从原串的何处起取,第三个参数指子串长度:substr(abcdef,1,4)substr(ab,1,4)= ab //日期截取,即截取时间,保留时间部分:trunc(sysdate) //日期的加

创造明天... 712

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

新手学PL/SQL(2)

 //比较零碎,先记下了,以后再系统地去学习1.在存储过程中使用游标返回结果集:(1)包:create or replace package PKG_ReturnSetastype MyCurType is ref cursor;end; (2)存储过程:create or replace procedure SP_ReturnSet(p_Result ou

johncools的博客 1033

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

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

1--PL/SQL-Main Features of PL/SQL

【代码】1--PL/SQL-Main Features of PL/SQL。

weixin_45699851的博客 1367

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

零基础学PL/SQL连接Oracle:图文保姆教程

作为刚接触Oracle数据库的新手,第一次配置PL/SQL连接可能会觉得像在解谜游戏。可以直接在浏览器里写SQL和PL/SQL代码,不用安装任何软件,连上他们提供的测试数据库就能练习。对于需要长期运行的学习项目,还能一键部署成可访问的在线服务,比如数据查询页面什么的。在登录界面,用户名密码填你的数据库账号,Database下拉框就能看到刚配置的“数据库别名”,选它!检查tnsnames.ora是否放对位置,内容里的空格和换行必须严格对齐,就像写诗要注意格式。刚开始学PL/SQL时,最头疼的就是配环境。

CrystalwaveEagle34的博客 768

PL/SQL实现1到100素数判断

其实PL/SQL中的循环和分支结构的代码实现逻辑与其他的程序设计语言是差不多的,学会了其中的一个就能够很容易上手另外一个 PL/SQL有四个组成部分,declare、begin、exception、end;(注意有分号) 然后比较简单的一个实例,1-100素数判断,并输出所有的素数 declare ret number:=1; i number :=1; flag numb

Wendy_dreamcatcher的博客 5042

PL/SQL学习笔记1

子类型是另一种数据类型的子集,称为其基类型。子类型具有与其基类型相同的有效操作,但只有其有效值的一个子集。您可以定义和使用自己的子类型。

csy931的博客 918

PL/SQL概述

PL/SQL(Procedure Language/SQL)是 Oracle对 sql 语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句(如分支、循环等),使 SQL 语言具有过程处理能力。把SQL语言的数据操纵能力与过程语言的数据处理能力结合起来,使得 PLSQL 面向过程但比过程语言简单、高效、灵活和实用。

weixin_71629261的博客 4695

PL/SQL语言、PL/SQL中的程序控制、PL/SQL存储过程

文章目录PL/SQL语言PL/SQL中的程序控制PL/SQL存储过程 PL/SQL语言 PL/SQL的基本概念 PL/SQL也是一种程序语言,叫做过程化SQL语言。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据库和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL只有...

Jack_cherisf的博客 2073

Oracle PL/SQL Programming 第1章:Introduction to PL/SQL 读书笔记

Oracle PL/SQL Programming 第1章:Introduction to PL/SQL 读书笔记

In-Memory Computing Technology 1427
上一篇: 转 PL/SQL编程经验小结
下一篇: 菜鸟的JDK安装
AddisonJ
博客等级 码龄16年 45粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值