Oracle-存储过程

简介

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,它大大提高了SQL语句的功能和灵活性。存储过程编译后存储在数据库中,所以执行存储过程比执行存储过程中封装的SQL语句更有效率。

语法

 存储过程:
一组为了完成某种特定功能的sql语句集,
存储在数据库中,经过一次编译后,再次调用不需要再次编译.
用户通过存储过程的名字进行调用存储过程
优点:
效率高,安全性好,复用性强,可维护性高,不用传输大量的sql
存储过程,游标,视图的区别
在存储过程的语法中 可以使用as或is
在游标中只能使用is
在视图中只能使用as

定义语法:
create or replace procedure存储过程名(推荐proc_)
as |is
    --定义变量
begin
    --存储过程执行的语句
end;
调用语法:
call存储过程名();

示例

 无参无返回值

-- 1.创建一个最简单的存储过程,只输出︰你好存储过程------(无参无返回值)--定义
create or replace procedure proc_out_info
as
begin
dbms_output.put_line('你好,存储过程');
end;
--调用
call proc_out_info();--不可以省略2.创建两个变量,在存储过程中输出这两个变量的值-李四,,成绩90 ---李四的数学成绩为90分
--定义
create or replace procedure proc_out_info_2
ismyname varchar2(50):='李四";score number;
beginscore: =90;dbms_output.put_line(mynamell'的数学成绩为'||scorell'分');
end;
--调用
call proc_out_info_2();

注意事项:1.如果存储过程没有输入参数及输出参数()可以不写
2.如果存储过程包含输入参数则必须要写(),
同时使用in来标明该参数为输入参数
存储过程名(参数名1 in参数类型1 ,参数名2 in参数类型2)

带参无返回

--6查询根据部门编号统计该部门的员工人数并输出------带参无返回
--select count(*) from emp where depid=3;
--分析:因为不知都部门编号因此采用带一个输入参数的存储过程,
--一个输入参数:类型number
--定义
create or replace procedure proc_emp_depid(dno in number )
isnum number : =0;
beginselect count(*) into numfrom empwhere depid=dno;dbms_output.put_line( '部门编号为'l|dno||'的员工个数为'||num);
end;
--调用
--查询部门编号为1的员工人数
call proc_emp_depid(1);
--查询部门编号为3的员工人数
call proc_emp_depid(3);
--查询部门编号为5的员工人数
call proc_emp_depid(5);

 

--7.根据学生姓名及学生性别查询符合条件的学生个数并输出
--带几个输入参数,分别什么类型
--姓名性别, varchar() char()
--定义
create or replace PROCEDURE proc_emp_name( sname in varchar2,ssex in char)
isnum number : =0;beginselect count(*) into numfrom studentwhere stuname like concat(concat( %' , sname), '%') and sex=ssex;dbms_output.put_line('学生个数为‘||num);
end;
--调用
callproc_emp_name( '李", '0');

无参带返回值

-- 类似 java 中 带有 返回值的调用-- 无参带返回值, out 输出参数, 存储过程的返回值
create or replace procedure  proc_lian_1(name out  VARCHAR2)
as
beginname:='你好存储过程';
end;--调用
declare s VARCHAR2(50);
beginproc_lian_1(s);dbms_output.put_line(s);
end;

 带参带返回值

--带参带返回值-- 定义输入输出参数的形式, 来实现, 根据 年级编号统计 学生的总数--  年级编号 输入参数
--  学生总数 输出参数create or replace procedure proc_lian_1(gradeId in number,stucount out number)
is
beginselect  count(*) into stucountfrom  studentwhere gid=gradeId;end;-- 调用declare  s number; gid number;
begingid:=2;proc_lian_1(gid,s);    --调用存储过程dbms_output.put_line('年级编号为'||gid||'的学生人数为'||s); --输出结果
end;

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

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

相关文章

Protobuf 编码结构

编码结构 什么是protobuf protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,可用于数据通信协议和数据存储等,它是 Google 提供的一个具有高效协议数据交换格式工具库,是一种灵活、高效和自动化机制的结构数据序列…

MySQL-数据库概述

数据库相关概念: 数据库(DateBase)简称DB,就是一个存储数据的仓库,数据有组织的进行存储。 数据库分为关系型数据库简称RDBMS和非关系型数据库 关系型数据库简称RDBMS:建立在关系模型的基础上,由多张相互连接的二维表组成的数据库.简单来说…

Nginx(十七) 日志轮询/切割

1.编写shell脚本 Nginx_Log_Path"/usr/local/nginx/logs/" Dateformat$(date -d "yesterday" %Y%m%d) mv ${Nginx_Log_Path}/access.log ${Nginx_Log_Path}/access-${Dateformat}.log mv ${Nginx_Log_Path}/access_8688.log ${Nginx_Log_Path}/access_868…

【Linux软件包管理器】yum详解

目录 1、什么是软件包 2、yum的操作 1)yum源 2)三板斧 ① yum list ② yum install [软键名] ③ yum remove [软件名] 1、什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了,…

除了sd webui,compfy还有一个sd UI

GitHub - VoltaML/voltaML-fast-stable-diffusion: Beautiful and Easy to use Stable Diffusion WebUI

国科大图像处理2024速通期末——汇总2017-2019、2023回忆

国科大2023.12.28图像处理0854期末重点 图像处理 王伟强 作业 课件 资料 一、填空 一个阴极射线管它的输入与输出满足 s r 2 sr^{2} sr2,这将使得显示系统产生比希望的效果更暗的图像,此时伽马校正通常在信号进入显示器前被进行预处理,令p…

Unity之键盘鼠标的监控

小编最近在玩大表哥2,通过 W、A、S、D 来移动亚瑟,鼠标左键来不吃牛肉 我们都知道玩家通过按键鼠标来控制游戏人物做出相应的行为动作,那在Unity引擎里是怎么知道玩家是如何操作的呢?本篇来介绍Unity是怎样监控键盘和鼠标的。 首先…

fatal: Need to specify how to reconcile divergent branches.如何处理

错误信息 “fatal: Need to specify how to reconcile divergent branches.” 通常在尝试推送到远程仓库时出现,尤其是当本地分支和远程分支有分歧(即它们各自有一些不同的提交)时。处理这个问题通常涉及合并(merge)或…

计算机网络期末知识汇总

一、计算机网络概述 1.Internet 的中文译名并不统一。 现有的 Internet 译名有两种: 因特网,这个译名是全国科学技术名词审定委员会推荐的,但却长期未得 到推广; 互联网,这是目前流行最广的、事实上的标准译名。现…

spring常用注解(三)springbean类

一、Service用于标注业务层组件、 二、Repository用于标注数据访问组件,即DAO组件。 三、Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。(pojo) 四、Scope用于指定scope作用域的&#xff…

Node.js + Mysql 防止sql注入的写法

关键代码 const queryString SELECT * FROM sys_user LIMIT ?, ?;let data await query(queryString, [startIndex,pageSize]); 访问数据库相关代码 const mysql require(mysql)const pool mysql.createPool({host: 127.0.0.1,user: root,password: 123456,database:…

【C语言】静动态内存的跨函数访问malloc、free

目录 多指针初认识&#xff1a;动态内存和多级指针的跨函数访问动态内存和静态内存的比较&#xff1a;静态内存不可以跨函数访问&#xff1a;动态内存跨函数访问&#xff1a;malloc和free示例 多指针初认识&#xff1a; #include <stdio.h> #include <stdlib.h> in…

技术查漏补缺(1)Logback

一、下定义&#xff1a;Logback是一个开源的日志组件 二、Logback的maven <!--这个依赖直接包含了 logback-core 以及 slf4j-api的依赖--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><v…

新手解锁语言之力:理解 PyTorch 中 Transformer 组件

目录 torch.nn子模块transformer详解 nn.Transformer Transformer 类描述 Transformer 类的功能和作用 Transformer 类的参数 forward 方法 参数 输出 示例代码 注意事项 nn.TransformerEncoder TransformerEncoder 类描述 TransformerEncoder 类的功能和作用 Tr…

vite + vue3引入ant design vue 报错

npm install ant-design-vue --save下载插件并在main.ts 全局引入 报错 解决办法一&#xff1a; main.ts注释掉全局引入 模块按需引入 解决办法二 将package.json中的ant-design-vue的版本^4.0.0-rc.4改为 ^3.2.15版本 同时将将package-lock.json中的ant-design-vue的版本…

Android13 热点默认5G频道配置修改

Android13 热点默认5G频道配置修改 文章目录 Android13 热点默认5G频道配置修改一、前言二、修改默认配置1、代码中修改默认配置2、保存默认配置文件设置默认5G频段配置热点配置文件完整信息示例&#xff1a; 3、代码中强制设置配置信息&#xff08;1&#xff09;在关键流程设置…

Graceful Response 构建 Spring Boot 下优雅的响应处理

一、Graceful Response Graceful Response 是一个 Spring Boot 技术栈下的优雅响应处理器&#xff0c;提供一站式统一返回值封装、全局异常处理、自定义异常错误码等功能&#xff0c;使用Graceful Response进行web接口开发不仅可以节省大量的时间&#xff0c;还可以提高代码质…

小白综述:深度学习 OCR 图片文字识别

文章目录 1. OCR 算法流程1.1 传统 OCR 方法1.2 深度学习 OCR 方法1.2.1 two-stage方法&#xff1a;文字检测识别1.2.2 端到端方法 2. 文本检测算法3. 文本识别算法3.1 基于分割的单字符识别方法3.2 基于序列标注的文本行识别方法 1. OCR 算法流程 OCR (Optical Character Rec…

揭开 JavaScript 作用域的神秘面纱(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

简单vlan划分和dhcp中继(Cisco Packet Tracer模拟)

文章目录 1. 前言2. 功能实现2.1. dhcp服务器接入2.2. 学校web服务器2.3. 设置学校dns服务器2.4. 设置线路冗余2.5. 配置ac。 1. 前言 在这里我们的计网作业是使用思科的Cisco Packet Tracer进行对校园网的简单规划&#xff0c;这里我对校园网进行了简单的规划&#xff0c;功能…