db2接口调用存储过程_MySQL存储过程详解

2023-09-14 1640阅读

经常有朋友问我这个存储过程怎么写?什么是存储过程?存储过程是一组可编程函数。它被编译、创建并保存在数据库中。用户可以指定存储过程的名称并给出参数(需要时)。我们以customers表为例,通过传递客户ID的值来查询客户的具体信息:。当我们执行存储过程的时候,系统中就会出现一个这个名字的存储过程,这个存储过程是可以自定义的。调用存储过程的语法非常简单: CALLsp_name 接下来我们调用上面的存储过程 sp_customers. 上述代码的含义是将客户ID为1的数据传递给存储过程sp_customers,并通过CALL调用该存储过程执行。

点击关注上面的“SQL数据库开发”,

设置为“顶级或星级”以尽快获得有用的货物

经常有朋友问我这个存储过程怎么写? 作为有过这种经历的人,我一开始也遇到过这样的困扰。 今天我将告诉您如何创建和使用这个存储过程。 什么是存储过程? 存储过程是一组可编程函数。 它是一组完成特定功能的SQL语句。 它被编译、创建并保存在数据库中。 用户可以指定存储过程的名称并给出参数(需要时)。 调用执行。 关键词:可编程、特定功能、调用创建存储过程。 我们以customers表为例,通过传递客户ID的值来查询客户的具体信息:

db2接口调用存储过程_MySQL存储过程详解

表顾客

例子:

CREATE PROCEDURE sp_customers(IN cusid INT)
BEGIN 
  SELECT * FROM customers WHERE `客户ID`=cusid;
END;

上面是一个比较简单的存储过程,其主要功能是查询客户信息。 这里我们简单解释一下: CREATE PROCEDURE:这是创建存储过程的关键字,是固定的语法。 sp_customers:这是存储过程的名称。 当我们执行存储过程的时候,系统中就会出现一个这个名字的存储过程,这个存储过程是可以自定义的。 IN:表示输入参数。 当然,还有输出参数关键字OUT。 同时,也可以将参数留空,不定义参数。 cusid INT:定义参数名称和类型。 这里我们定义了一个名为 cusid 、类型为 INT 的参数。 BEGIN ... END:这是存储过程主体的固定语法。 中间写的是你需要执行的SQL函数。 调用存储过程当我们创建了上面的存储过程之后,我们就可以调用它了。 调用存储过程的语法非常简单: CALLsp_name([parameter]) 接下来我们调用上面的存储过程 sp_customers

CALL sp_customers(1);

解释:

上述代码的含义是将客户ID为1的数据传递给存储过程sp_customers,并通过CALL调用该存储过程执行。 结果是:

db2接口调用存储过程_MySQL存储过程详解

细心的朋友可能发现了,这只是一个简单的WHERE查询语句? 是的,当您第一次开始使用存储过程时,您不需要让它们变得神秘。 你认为它们越神秘,就越难熟练地使用它们。 复杂的事情必须先简单化,然后才能进一步掌握。 流程体示例:

BEGIN
  BEGIN
    BEGIN
      -- SQL代码;
    END
  END
END

注意:每个嵌套块及其中的每个 SQL 语句都必须以分号 (;) 结尾。 指示过程体结束(即 END 之后)的 BEGIN-END 块(也称为复合语句)不需要分号。 Tag标签通常与BEGIN-END一起使用,以增强代码的可读性。 语法为: [label_name:]BEGIN [statement_list]END[label_name] 例如:

db2接口调用存储过程_MySQL存储过程详解

label1: BEGIN
  label2: BEGIN
    label3: BEGIN
      --SQL代码;
    END label3 ;
  END label2;
END label1

这个功能不常用,了解一下就可以了。 存储过程的参数上面我们简单讲了存储过程参数的定义,现在我们详细告诉大家如何使用参数。 参数类型 IN 输入参数 上例为输入参数示例,此处不再赘述。 OUT 输出参数

CREATE PROCEDURE sp_customers_out(OUT cusname VARCHAR(20))
BEGIN
  SELECT cusname;
  SELECT `姓名` INTO cusname FROM customers WHERE `客户ID`=1;
  SELECT cusname;
END

调用上面的存储过程:

CALL sp_customers_out(@cusname);

结果是:

db2接口调用存储过程_MySQL存储过程详解

结果1

db2接口调用存储过程_MySQL存储过程详解

结果2 上面我们定义了一个参数,其输出参数为cusname(如果参数类型有长度,则必须给出长度)。 然后在流程体中,我们输出两个参数的结果。 结果1为NULL,因为我们的输出参数cusname还没有收到任何值,所以为NULL; 结果 2 包含客户名称,因为我们添加了客户名称 ID 为 1 的客户名称被传递给输出参数 cusname。 INOUT 输入输出参数不常见,但也有使用。 即,同一个参数既是输入参数又是输出参数。 我们通过稍微修改上面的存储过程就可以看到差异。

CREATE PROCEDURE sp_customers_inout(INOUT cusname VARCHAR(20))
BEGIN
  SELECT cusname;
  SELECT `姓名` INTO cusname FROM customers WHERE `客户ID`=2;
  SELECT cusname;
END

在调用上面的存储过程之前,我们首先给出一个输入参数:张三

SET @cusname='张三';
CALL sp_customers_inout(@cusname);

结果是:

db2接口调用存储过程_MySQL存储过程详解

db2接口调用存储过程_MySQL存储过程详解

结果1

db2接口调用存储过程_MySQL存储过程详解

结果2 上面我们定义了一个参数,其输入和输出参数都是cusname。 然后在流程体中,我们两次输出参数的结果:第一次将定义好的“张三”(SET @cusname='张三')传递给参数cusname,也就是此时的输入参数。 进入流程体后,第一个输出结果1是“张三”。 此时参数cusname即为输出参数; 然后通过查询再次将客户ID为2的客户名称传递给cusname以更改其值。 此时,它也是输出参数。 参数,只是输出结果发生了变化。 以上就是三个参数的用法。 建议:

——End——

后台回复关键字:1024,获取一份精心整理的技术干货后台回复关键字:进群,带你进入高手如云的交流群。推荐阅读

SQL语法快速指南

精心编写了一组高级 SQL 函数。 建议收集它们。

一款自动SQL检查工具,您再也不用担心SQL错误!

SQL语句中where条件后面写1=1是什么意思?

国产数据库建模工具,第一次看到界面,心里有愧疚!

这是一个可以学习技术的公众号,欢迎关注

db2接口调用存储过程_MySQL存储过程详解

点击「」了解SQL训练营
	

HDFS前言: 1)设计理念是分而治之:大文件、大批量的文件分布存储在大量的服务器上,以便于分而治之的方式对海量数据进行计算和分析; 2)它在大数据系统中的作用:为各类分布式计算框架(如:mapreduce、spark、tez、...)提供数据存储服务 3)关键概念:文件切片、副本存储、元数据

1:分布式文件系统:

(1):数据量不断增加,无法在一个操作系统的管辖范围内存储,因此分配到操作系统管理的更多磁盘上。 但管理和维护不方便,急需一个系统。 管理多台机器上的文件是分布式文件管理系统。 (2):是一种允许文件通过网络在多台主机上共享的文件系统,允许多台机器上的多个用户共享文件和存储空间。 (3):渗透性。 从程序和用户的角度来看,通过网络访问文件的实际动作就像访问本地磁盘一样。 (4):容错。 即使系统中的某些节点离线,系统整体仍然可以继续运行而不会丢失数据。 (5):分布式文件管理系统有很多,HDFS只是其中之一。 它适合一次编写多个查询。 不支持并发写入,不适合小文件。

2:Hadoop最擅长的是(离线)日志分析

(1): HDFS----》海量数据存储 (2): MapReduce----》海量数据分析 (3): YARN----》资源管理与调度

3:HDFS的外壳

(1):文件系统(FS)Shell命令应以bin/hadoop fs的形式调用。 (2):所有 FS shell 命令都使用 URI 路径作为参数。 URI 格式为scheme://authority/path。 HDFS的scheme是hdfs,对于本地文件系统来说,scheme是file。 方案和权限参数是可选的。 如果未指定,将使用配置中指定的默认方案。 例如:/parent/child可以表示为hdfs://namenode:namenodePort/parent/child,或者更简单的/parent/child(假设配置文件为namenode:namenodePort) (3):大多数FS Shell命令的行为与相应的Unix Shell命令类似。

4:HDFS fs命令

(1) -help [cmd] //显示命令帮助信息 (2) -ls(r)

//显示当前目录下的所有文件 (3)-du(s)

//显示目录下所有文件的大小 (4)-count[-q]

//显示目录下的文件数量 (5)-mv //移动多个文件到目标目录 (6)-cp //复制多个文件到目标目录 (7)-rm(r) //删除文件(folders) (8)-put //复制本地文件到hdfs (9)-copyFromLocal //同put(10)-moveFromLocal //从本地文件移动到hdfs (11)-get [-ignoreCrc] //复制(12) -getmerge // 将源目录下的所有文件排序并合并为一个文件 (13) -cat // 在终端中显示文件内容 (14) -text //在终端中显示文件内容(15)-copyToLocal[-ignoreCrc] //复制到本地(16)-moveToLocal(17)-mkdir

//创建文件夹(18)-touchz

// 创建一个空文件

5:HDFS Shell命令练习

(1)#hadoop fs -ls / 查看HDFS根目录 (2)#hadoop fs -mkdir /test 在根目录创建目录test (3)#hadoop fs -mkdir /test1 在根目录创建目录test1 (4) #hadoop fs -put ./test.txt /test 或 #hadoop fs -copyFromLocal ./test.txt /test (5) #hadoop fs -get /test/test.txt 。 或#hadoop fs -getToLocal /test/test.txt 。 (6) #hadoop fs -cp /test/test.txt /test1 (7) #hadoop fs -rm /test1/test.txt (8) #hadoop fs -mv /test/test.txt /test1 (9) # hadoop fs -rmr /test1

6:HDFS架构

(1)NameNode (2)DataNode (3)Secondary NameNode

db2接口调用存储过程_MySQL存储过程详解

7:名称节点

(1)是整个文件系统的管理节点。 它维护了整个文件系统的文件目录树、文件/目录的元信息以及每个文件对应的数据块列表。 接收用户操作请求。 (2) 文件包括: fsimage:元数据图像文件。 存储一定时间段的NameNode内存元数据信息。 编辑:操作日志文件。 fstime:保存最新检查点的时间 (3) 上述文件保存在Linux文件系统中。

8:NameNode的工作特点

(1)Namenode总是将元数据保存在内存中,用于处理“读请求”。 (2)当“写请求”到来时,Namenode会首先将editlog写入磁盘,即将日志写入edits文件。 成功返回后,才会将内存修改并返回给客户端 (3) Hadoop会维护一个fsimage文件,该文件是namenode中metedata的镜像,但是fsimage不会与namenode中metedata一致随时记忆,但每隔一段时间就会合并。 编辑文件以更新内容。 secondary namenode用于合并fsimage并编辑文件以更新NameNode的元数据。

9:次要名称节点

(1)HA解决方案。 但不支持双机热备。 只需配置一下即可。 (2)执行过程:从NameNode下载元数据信息(fsimage、edits),然后将两者合并生成新的fsimage,保存在本地,推送到NameNode以替换旧的fsimage。 (3) 默认安装在NameNode节点上,但是这样……不安全!

10:辅助namenode的工作流程

(1) secondary 通知 namenode 切换 edits 文件 (2) secondary 从 namenode 获取 fsimage 和 edits (通过 http) (3) secondary 将 fsimage 加载到内存中,然后开始合并 edits (4) secondary将新的fsimage发送回namenode(5)namenode用新的fsimage替换旧的fsimage

11:何时检查点

(1)fs.checkpoint.period指定两个检查点之间的最大时间间隔,默认为3600秒。 (2) fs.checkpoint.size指定edits文件的最大值。 一旦超过该值,无论是否达到最大时间间隔,都会强制执行检查点。 默认大小为64M。

12:NameNode和SecondNameNode之间的连接

db2接口调用存储过程_MySQL存储过程详解

13:数据节点

(1)提供真实文件数据的存储服务。 (2)文件块(block):最基本的存储单元。 对于文件内容来说,一个文件的长度为size,那么从文件的0偏移量开始,按照固定的大小顺序对文件进行划分和编号,每个划分的块称为一个Block。 HDFS默认的块大小是128MB。 对于一个256MB的文件来说,总共有256/128=2个Block.dfs.block.size (3)与普通文件系统不同,在HDFS中,如果一个文件小于一个数据块的大小,则不占用整个数据块存储空间 (4)Replication。 多份。 默认值为三个。 hdfs-site.xml 的 dfs.replication 属性

14:远程过程调用

(1)RPC——远程过程调用协议,是一种在不了解底层网络技术的情况下通过网络向远程计算机程序请求服务的协议。 RPC 协议假定存在某种传输协议(例如 TCP 或 UDP),以在通信程序之间传送信息数据。 在OSI网络通信模型中,RPC跨越了传输层和应用层。 RPC 使开发应用程序(包括网络分布式多道程序设计)变得更加容易。 (2)RPC采用客户端/服务器模式。 请求者是客户端,服务提供者是服务器。 首先,客户端调用进程向服务进程发送带有进程参数的调用消息,然后等待回复消息。 在服务器端,进程保持睡眠状态,直到调用消息到达。 当一个调用消息到达时,服务器获取流程参数,计算结果,发送回复消息,然后等待下一个调用消息。 最后,客户端调用该流程接收回复消息,获取流程结果,然后继续调用执行。 (3)hadoop的整个架构是建立在RPC之上的(参见org.apache.hadoop.ipc)。

15:HDFS读取流程

(1)初始化FileSystem,然后客户端使用FileSystem的open()函数打开文件(2)FileSystem使用RPC调用元数据节点获取文件的数据块信息。 对于每个数据块,元数据节点返回并保存该数据块的数据节点的地址。 (3)FileSystem返回FSDataInputStream给客户端读取数据,客户端调用流的read()函数开始读取数据。 (4) DFSInputStream 连接最近的保存此文件第一个数据块的数据节点,并从该数据节点读取数据到客户端 (5) 当读取数据块时,DFSInputStream 关​​闭与此数据节点的连接。 ,然后连接到该文件的下一个数据块的最近的数据节点。 (6) 当客户端读取完数据后,调用FSDataInputStream的close函数。 (7)在读取数据的过程中,如果客户端在与数据节点通信时遇到错误,则会尝试连接下一个包含该数据块的数据节点。 (8) 失败的数据节点将被记录,以后不再连接。

db2接口调用存储过程_MySQL存储过程详解

db2接口调用存储过程_MySQL存储过程详解

16:HDFS写入流程

(1)初始化FileSystem,客户端调用create()创建文件(2)FileSystem使用RPC调用元数据节点在文件系统的命名空间中创建新文件。 元数据节点首先判断该文件不存在,并且Client有创建文件的权限,然后再创建新文件。 (3)FileSystem返回DFSOutputStream,用于客户端写入数据,客户端开始写入数据。 (4)DFSOutputStream将数据分成块写入数据队列。 数据队列由Data Streamer读取,并通知元数据节点分配数据节点存储数据块(每个块默认复制3个块)。 分配的数据节点被放置在管道中。 Data Streamer 将块写入管道中的第一个数据节点。 第一数据节点将数据块发送至第二数据节点。 第二数据节点向第三数据节点发送数据。 (5)DFSOutputStream保存发送的数据块的ack队列,等待管道中的数据节点通知数据已写入成功。 (6) 当客户端写完数据后,调用流的close函数。 该操作将所有数据块写入管道中的数据节点,并等待ack队列返回成功。 最后通知元数据节点写入完成。 (7) 如果数据节点在写入过程中出现故障,则关闭管道,并将数据块放入数据队列开头的ack队列中。 当前数据块被已写入的数据节点中的元数据节点赋予新的值。 如果错误节点重新启动,它将能够检测到其数据块已过期并将被删除。 发生故障的数据节点将从管道中删除,并将额外的数据块写入管道中的其他两个数据节点。 通知元数据节点该数据块的复制块数量不足,以后将创建第三个备份。

db2接口调用存储过程_MySQL存储过程详解

17:HDFS架构

(1)主从结构主节点,namenode从节点,有多种:datanode (2)namenode负责:接收用户操作请求,维护文件系统的目录结构,管理文件和块的关系,以及块与datanode的关系 (3) datanode负责:存储文件。 文件被分成块并存储在磁盘上。 为了保证数据安全,该文件会有多个副本。

18:Hadoop部署方法

(1)本地模式 (2)伪分布式模式 (3)集群模式

19:Hadoop的特点

(1) 可扩展:能够可靠地存储和处理千兆字节(PB)的数据。 (2)低成本(Economical):数据可以通过普通机器组成的服务器组进行分发和处理。 这些服务器场可以添加多达数千个节点。 (3)高效:通过分布式数据,Hadoop可以在数据所在的节点上并行处理它们,这使得处理速度非常快。 (4)可靠性:Hadoop可以自动维护数据的多份副本,并且可以在任务失败后自动重新部署计算任务。

20:HDFS的概念和特点:

1)首先,它是一个文件系统,用于存储文件,并通过统一的命名空间-目录树来定位文件。 2)其次,它是分布式的,由很多服务器联合起来实现其功能。 集群中的服务器有自己的角色; 3)重要特点如下: (1)HDFS中的文件物理上是以块(blocks)的形式存储的。 块的大小可以通过配置参数(dfs.blocksize)指定。 默认大小在hadoop2.x版本为128M,老版本为64M (2)HDFS文件系统会为客户端提供统一的抽象目录树,客户端通过路径访问文件,形式为: hdfs://namenode:port/dir-a /dir-b/dir-c/file.data (3) 目录结构和文件块信息(元数据)的管理由namenode节点承担。 namenode是HDFS集群的主节点,负责维护整个hdfs文件系统的目录树,以及每个路径(文件)对应的块信息(块的ID以及所在的datanode服务器) ) (4) 文件各块的存储管理由datanode节点承担。 datanode是HDFS集群的从节点。 每个块可以在多个datanode上存储多个副本(副本数量也可以通过参数dfs.replication设置)(5)HDFS设计用于适应一次写入多次读取的场景,不支持文件修改。 注意:适合做数据分析,不适合网盘应用,因为修改不方便,延迟大,网络开销大,成本太高;

22:hadoop常用命令参数介绍:

-help 功能:输出该命令参数手册 -ls 功能:显示目录信息 示例:hadoop fs -ls hdfs://hadoop-server01:9000/ 注意:这些参数中,所有hdfs路径都可以缩写 -->hadoop fs - ls / 相当于上一个命令的效果 -mkdir 功能:在hdfs上创建目录 示例:hadoop fs -mkdir -p /aaa/bbb/cc/dd-moveFromLocal 功能:从本地剪切粘贴到hdfs 示例:hadoop fs - moveFromLocal /home/hadoop/a. txt /aaa/bbb/cc/dd-moveToLocal 功能:从 hdfs 剪切并粘贴到本地 示例:hadoop fs - moveToLocal /aaa/bbb/cc/dd /home/hadoop/a.txt txt --appendToFile 功能:将文件附加到现有文件的末尾示例:hadoop fs -appendToFile。 /你好。 txt hdfs://hadoop-server01:9000/hello.txt txt 可以缩写为:Hadoop fs -appendToFile。

/你好。 txt/你好。 txt-cat 功能:显示文件内容示例:hadoop fs -cat /hello.txt txt-tail 功能:显示文件末尾示例:hadoop fs -tail /weblog/access_log。 1-text功能:以字符形式打印文件内容示例:hadoop fs -text /weblog/access_log。 1-chgrp -chmod-chown 功能:在linux文件系统中的用法是一样的,文件的权限举例:hadoop fs -chmod 666 /hello。 txtthadoop fs -chown someuser:somegrp /hello.txt txt-copyFromLocal 功能:将文件从本地文件系统复制到hdfs路径示例:hadoop fs -copyFromLocal。 /jdk。 柏油。 gz /aaa/-copyToLocal 功能:从hdfs复制到本地 示例:hadoop fs -copyToLocal /aaa/jdk。 柏油。 gz-cp 功能:从一个hdfs路径复制另一个hdfs路径 示例:hadoop fs -cp /aaa/jdk。

柏油。 gz/bbb/jdk。 柏油。 gz。 2-mv功能:移动hdfs目录下的文件示例:hadoop fs -mv /aaa/jdk。 柏油。 gz /-get 功能:相当于copyToLocal,就是从hdfs下载文件到本地示例:hadoop fs -get /aaa/jdk。 柏油。 gz-getmerge 功能:合并下载多个文件示例:例如hdfs目录/aaa/下有多个文件:log.txt。 1、日志。 2、日志。 3、. 。 。 hadoop fs -getmerge /aaa/log.txt *。 /日志。 sum-put 函数:相当于 copyFromLocal 示例:hadoop fs -put /aaa/jdk。 柏油。 gz/bbb/jdk。 柏油。 gz。 2-rm 功能:删除文件或文件夹 示例:hadoop fs -rm -r /aaa/bbb/-rmdir 功能:删除空目录 示例:hadoop fs -rmdir /aaa/bbb/ccc-df 功能:文件系统统计可用空间信息示例:hadoop fs -df -h /-du 功能:统计文件夹大小信息 示例:hadoop fs -du -s -h /aaa/*-count 功能:统计a中文件节点数示例指定目录:hadoop fs -count /aaa/-setrep 功能:设置hdfs中文件的份数 示例:hadoop fs -setrep 3 /aaa/jdk。 柏油。 广州

23:HDFS的工作机制:

(工作机制的学习主要是加深对分布式系统的理解,增强遇到各种问题时分析解决的能力,形成一定的集群运维能力)注:很多人并不是真正了解Hadoop技术系统经常认为HDFS可以用于网盘应用,但事实并非如此。要将技术准确地用在正确的地方,必须对技术有深刻的理解概述一:HDFS集群分为两大角色:NameNode、DataNode2:NameNode负责管理整个文件系统的元数据3:DataNode负责管理用户文件数据块4:文件会按照固定的大小(blocksize)被切割成若干个块,然后分发出去存储在多个数据节点上。 5:每个文件块可以有多个副本,并存储在不同的datanode上。 6:Datanode会定期将其保存的文件块信息上报给Namenode,Namenode负责维护文件的副本数量: 7:HDFS内部工作机制对客户端保持透明,客户端请求通过申请namenode来访问HDFS。

待续......

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]