Oracle存储过程基本语法

article/2025/9/16 23:46:03

后来者居上,不是easy的事情

尤其技术类work,更加如此。都是have one 投入的过程的。尤其开发,还是属于技术壁垒挺高的行业。

创建基本的存储过程

1 CREATE OR REPLACE PROCEDURE MyProName IS
2 BEGIN
3   NULL;
4 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体的结束

创建带参数存储过程

现在想给存储过程加上参数,定义变量怎么处理呢?如下

复制代码

1 CREATE OR REPLACE PROCEDURE MyPro(param1 in varchar2,param2 out varchar2) as
2   v_cnt      number; --定义变量1
3   tablename1 varchar2(80); --定义变量2
4   sqlTxt     varchar2(2000); --定义变量2
5 BEGIN
6   --处理逻辑
7   NULL;
8 END;

复制代码

 (1)存储过程参数不带取值范围,in表示传入,out表示输出;类型可以使用任意Oracle中的合法类型。

 (2) 变量带取值范围,后面接分号

回到顶部

创建带事务的存储过程

复制代码

CREATE OR REPLACE PROCEDURE MyPro(param1 in varchar2,param2 out varchar2) asv_cnt      number; --定义变量1tablename1 varchar2(80); --定义变量2sqlTxt     varchar2(2000); --定义变量2
BEGIN--处理逻辑NULL;commit;--提交事务
ExceptionWhen others thenDbms_output.Put_line(sqlerrm);--打印输出错误Rollback;--回滚事务
END;

复制代码

 提交事务,存在异常则回滚事务;

回到顶部

使用游标

游标遍历

复制代码

CREATE OR REPLACE PROCEDURE MyPro(param1 in varchar2, param2 out varchar2) asv_cnt      number; --定义变量1tablename1 varchar2(80); --定义变量2sqlTxt     varchar2(2000); --定义变量2
BEGIN--定义游标cursor c_tab_temp1 isselect t.modelnumber, t.tablename from d_modelmap t;c_bom_row1 c_tab_temp1%rowtype;--处理逻辑--循环游标for c_bom_row1 in c_tab_temp1 looptablename1 := c_bom_row1.tablename;  --取游标中的值END LOOP;commit; --提交事务
ExceptionWhen others thenDbms_output.Put_line(sqlerrm); --打印输出错误Rollback; --回滚事务
END;

复制代码

返回游标

复制代码

create or replace procedure test(
res out varchar2,
p_cur out sys_refcursor)   as
Begin
open p_cur forselect * from tableName
res:='';
end;

复制代码

回到顶部

其他使用技巧

分支条件判断

复制代码

--分支判断if tablename1 <> '' then--处理逻辑null;else--处理逻辑null;end if;

复制代码

动态sql

复制代码

 --拼接动态sqlsqltxt := 'update ' || tablename1 || '  tset t.partid=(select t3.f_id from i_partlist t3 where t3.part_no=t.part_noand nvl(t3.part_techstate,'' '')=nvl(t.part_techstate,'' ''))where not  exists(select t2.f_id from i_Partlist t2 where t2.f_id=t.partid)';--执行动态sqlexecute immediate sqlTxt;

复制代码

给变量赋值

(1)用select XX into xx给变量赋值

 select count(1)  into v_count  from A t where t.A='aaa';

(2)直接赋值

V_TEST := 123;

while 循环

  WHILE V_TEST=1 LOOPBEGINXXXXEND;END LOOP;

判断是否存在

在判断语句前最好先用count(*)函数判断是否存在该条操作记录

复制代码

  --判断是否存在,v_count是定义的数值变量select count(1)into v_countfrom A twhere t.A='aaa';if v_count = 0 thenelseend if;

复制代码


http://chatgpt.dhexx.cn/article/KV2byXHE.shtml

相关文章

存储过程常见语法

存储过程常见语法 一、存储过程的概念: 1、存储过程Procedure是一组为了完成特定功能的SQL语句集合&#xff0c;经编译后存储在数据库中&#xff0c;用户通过指定存储过程的名称并给出参数来执行 2、存储过程中可以包含逻辑控制语句和数据操纵语句&#xff0c;它可以接受参数…

存储过程的语法讲解

在上一篇文章&#xff1a;别再说不知道什么是存储过程和存储函数了 中简单的介绍了存储过程和存储函数以及其使用。其实存储过程是可以进行编程的&#xff0c;所以可以和其他的编程语言一样使用变量、表达式以及控制结构进行编程&#xff0c;从而实现一些复杂和有用的功能。这篇…

子网掩码的作用

IP地址由网络和主机两部分标识组成 IP地址由“网络标识&#xff08;网络地址&#xff09;”和“主机标识&#xff08;主机地址&#xff09;”两部分组成。在局域网内相互间通信的网络必须具有相同网络地址&#xff0c;也叫相同的网段&#xff0c;在同一个网段内每个设备的主机…

子网掩码使用详解

一、子网掩码 IP地址是以网络号和主机号来标示网络上的主机的&#xff0c;我们把网络号相同的主机称之为本地网络&#xff0c;网络号不相同的主机称之为远程网络主机&#xff0c;本地网络中的主机可以直接相互通信&#xff1b;远程网络中的主机要相互通信必须通过本地网关&…

什么是子网掩码 子网掩码的作用是什么?

什么是子网掩码 子网掩码的作用是什么&#xff1f; 网络工作人员经常需要与ip和子网掩码等打交道&#xff0c;相信绝大数的朋友都知道IP的意思&#xff0c;但是还不理解子网掩码的意思&#xff0c;下面装机之家小编来为大家介绍下关于子网掩码的相关知识&#xff0c;希望能够对…

ip、子网掩码、网关、默认网关

这里写目录标题 ip网络地址主机地址 子网子网掩码子网掩码的表示方法为什么要使用子网掩码&#xff1f;子网掩码的分类 网关默认网关 ip ip地址 网络地址 主机地址&#xff08;又称&#xff1a;网络号和主机号&#xff09;&#xff0c;我们把网络号相同的主机称之为本地网络…

子网划分和子网掩码

目录 前言 1、IP地址 1.1 IP地址的内容 1.2 IP地址的分类 2、子网掩码的作用 2.1 主机间的通信 2.2 子网掩码 3.子网划分 3.1 子网划分的原因 3.2 子网划分的原理 3.3 IP地址汇总 总结 前言 知道IP地址的分类和基本使用&#xff0c;如果公司拥有300台计算机&#xf…

子网掩码详解

IP地址 IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址&#xff0c;才能正常通信。我们可以把“个人电脑”比作“一台电话”&#xff0c;那么“IP地址”就相当于“电话号码”&#xff0c;而Internet中的路由器&#xff0c;就相当于…

子网掩码的两种计算方式

&#xff08;尊重劳动成果&#xff0c;转载请注明出处&#xff1a;http://blog.csdn.net/qq_25827845/article/details/70946041冷血之心的博客&#xff09; 关注微信公众号&#xff08;文强的技术小屋&#xff09;&#xff0c;学习更多技术知识&#xff0c;一起遨游知识海洋~ …

子网掩码的划分和计算详解

一、子网掩码的计算 TCP/IP网间网技术产生于大型主流机环境中&#xff0c;它能发展到今天的规模是当初的设计者们始料未及的。网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性&#xff0c;而是会带来两方面的负担&#xff1a;第一&#xff0c;巨大的…

一文带你了解什么是子网掩码

什么是子网掩码 子网掩码代表了“网络号子网号”与主机号之间的分割方案。 很晦涩&#xff1f; 说子网掩码&#xff0c;我们还得先说说IP地址。 什么是IP地址 因特网上的每台主机或路由器端口都必须有一个唯一的IP地址。因为IP地址&#xff0c;在网络上我们才能互相识别&a…

制作QQ登录界面(UI版)

工具&#xff1a;Android Studio activity_main.xml <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http:…

html登录界面

今天是2019年11月14日我第一次注册博客&#xff0c;我把我做的一个登陆界面分享给大家看希望各位大佬指教。 首先是html文件。 1.登录界面html 登录界面 用户名: 密 码: 注册 2.注册界面html。 注册界面 用户名: 输入密码: 确认密码: 立刻注册返回登录 **3.效果图**! 欢迎…

Android仿QQ微信开场导航以及登陆界面

相信大家对于微信等社交应用的UI界面已经都很熟悉了&#xff0c;该UI最值得借鉴的莫过于第一次使用的时候一些列产品介绍的图片&#xff0c;可以左右滑动浏览&#xff0c;最后进入应用&#xff0c;这一效果适用于多种项目中&#xff0c;相信今后开发应用一定会用得到。网路上也…

[练习]QQ登陆界面-测试用例的编写

&#xff08;Test Case&#xff09;是为了实施测试而向被测试系统提供的一组集合&#xff0c; 包括&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素。 一条测试用例最终只有一个结果。 一个功能点至少有一个测试用例。 测试用例数/功能点数 测试的覆盖率&#xf…

web之qq邮箱登录界面

我们可以用css来做这个登录的表格 具体的完整代码实现如下&#xff1a; <!DOCTYPE html> <html> <meta charset"utf-8"> <title>登录qq邮箱</title> <style type"text/css">* {padding: 0;margin: 0;}.content {wid…

转载:QQ登录界面

//:登陆界面代码&#xff1a; package Myjava_QQ; import java.awt.*; import javax.swing.*; import Myjava_QQ.truess; import java.awt.event.*; import java.applet.*; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; …

模拟QQ登录页面

设计布局 代码体现 <html><head><title>模拟QQ登陆页面.html</title><meta http-equiv"content-type" content"text/html; charsetUTF-8"><style type"text/css">/*上大边框区域*/#main1{/*边框宽度*/wi…

【HTML+CSS+JS】模仿QQ登录界面

目录 前言简介布局思路相关代码颜色渐变动画头像表单区域JS相关 总结 前言 学了HTML、CSS和JS有了一个月了&#xff0c;JS还未学完&#xff0c;偷懒写一个小项目&#xff0c;用了一个下午&#xff0c;顺便巩固一下所学知识。&#xff08;内容比较简陋&#xff0c;适合新手&…

QQ登录界面(Java)

hi~好久不见吖&#xff0c;我又回来啦&#xff0c;dengdengdeng&#xff08;他来了&#xff0c;他来了&#xff0c;他带着他新学的知识来啦&#xff09; 咳咳&#xff0c;只是一个简单的界面&#xff0c;啥也不能干 这段时间我学习了窗体的创建&#xff0c;听老师讲了一会怎么…