0010 数据库对象—存储过程

2024-09-01 16:32

本文主要是介绍0010 数据库对象—存储过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

存储过程概念

存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可独立执行或由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程一旦创建,在服务器上即被编译,可以在需要时执行多次,有效的提高了执行效率。

 

存储过程的分类:系统存储过程和用户存储过程 。

系统存储过程存储在master数据库中,且以sp_为前缀。在其他数据库中可以直接调用,不必指明数据库名

 

存储过程的优点

可以在单个存储过程中执行一系列 SQL 语句。

可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

 

和函数的区别

执行的本质都一样。函数的限制比较多。具体如下;

1、返回值:函数只能返回值或者表对象而且是一个;而存储过程可以返回参数,返回单个或多个结果集以及返回值。

 

2、调用:函数是可以作为查询语句的一个部分来调用,所以可以嵌入在sql中使用,可以在select中调用;

             由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面;

              而存储过程作为一个独立的部分来执行。

 

3、数据来源;函数不能用临时表,只能用表变量;而存储过程的限制相对就比较少 。

 

实现功能:存储过程实现的功能要复杂一点;而函数的实现的功能针对性比较强。

 

主要讲用户存储过程的操作和调用

 管理存储过程的操作

1、创建存储过程:创建一个和创建一组。

步骤:1、判断存储过程是否存在,若存在,先删除存储过程。

          2、创建存储过程。

 

语法:(1)创建一个存储过程

                    if exists (sql语句)

                   Drop procedure  proname

                   Go

                   '开始创建

                   Create procedure proname  [参数列表(参数名,数据类型,默认值)[output]]

                   [with  recompile|encryption]

                   As<sql语句序列>

        (2)创建一组存储过程。用一个例子来说明吧!

使用“;”和 数字来创建了一组存储过程。

执行时,可以单独执行其中的一个,写明存储过程名,分号,和数字。例:execute group_sp;3

但是不可以单独删除某个存储过程,要删除只能一起删除。

 

         2、修改存储过程:只把定义中的create改成alter即可。

 

         3、删除存储过程:drop  procedure  proname

 

         4、查看存储过程:sp_helptext <存储过程名>    查看存储过程的文本,

                              sp_depends <对象名>          查看存储过程的饮用对象。

                              sp_help  显示所有相关信息。

         5、重命名存储过程:sp_rename  '<原名>','<新名>'

 

 

调用存储过程

         调用、参数传入、返回值。

               调用:使用语句execute。

 

              参数传入;按位传入:按照声明时的顺序传入;

                                按引用传入:按照参数的名字传入,书写参数时可一不安顺序来写。

              返回值:return 和output

两者没有区别:只是声明不同。return出现在定义完存储过程后。Return @变量名

而output是在创建存储过程定义变量时,写在要变量之后: @变量名  output

 

注意:1、参数变量前都需要加@。

             2、调用时,如果存储过程是批处理的第一条语句,可以不使用execute关键字,直接用存储过程铭来执行。

           3、传值时,@变量名=default或者不写,使用定义时的默认值。

          4、两种传值方式不可以混用。

 

触发器时特殊的存储过程,触发器是由事件触发的,而存储过程是单独执行或由程序调用的。

这篇关于0010 数据库对象—存储过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127466

相关文章

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

Java通过ServerSocket与Socket实现通信过程

《Java通过ServerSocket与Socket实现通信过程》本文介绍了Java中的ServerSocket和Socket类,详细讲解了它们的构造方法和使用场景,并通过一个简单的通信示例展示了如何... 目录1 ServerSocket2 Socket3 服务器端4 客户端5 运行结果6 设置超时总结1

通过DBeaver连接GaussDB数据库的实战案例

《通过DBeaver连接GaussDB数据库的实战案例》DBeaver是一个通用的数据库客户端,可以通过配置不同驱动连接各种不同的数据库,:本文主要介绍通过DBeaver连接GaussDB数据库的... 目录​一、前置条件​二、连接步骤​三、常见问题与解决方案​1. 驱动未找到​2. 连接超时​3. 权限不

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

MySQL数据库读写分离与负载均衡的实现逻辑

《MySQL数据库读写分离与负载均衡的实现逻辑》读写分离与负载均衡是数据库优化的关键策略,读写分离的核心是将数据库的读操作与写操作分离,本文给大家介绍MySQL数据库读写分离与负载均衡的实现方式,感兴... 目录读写分离与负载均衡的核心概念与目的读写分离的必要性与实现逻辑读写分离的实现方式及优缺点读负载均衡

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql