00:00
这个说完之后呢,咱们看下这个第五节叫做存储过程跟函数的一个查看,修改和删除,哎这呢,因为涉及到了就是他们二者,就是我们怎么去查看,咱们这个系统当中到底呢,有哪些这个诶存储过程哪些这个存储函数,呃,使用的这个语法呢,基本上是一致的啊,包括他们的修改删除啊,用的语法呢,基本上是一致的,所以所以呢,咱们就放在一起来讲解了。上面呢,咱们讲的是什么呢?就是他们二者分别的定义和调用啊,这个我们看到这个调用呢,使用的这个逻辑不一样,所以上面呢咱们是分开来讲的,下面呢我们就合成一起来讲解了。首先的话呢,我们看一下这个叫存储过程或者存储函数的一个查看,就是我们想看看创建完以后呢,哎,咱们都到了哪,到了哪些这个存储过程和存储函数啊,到底里边这些呃,函数或者过程是怎么写的,有哪些特征啊,哎,这里边呢,就使用了我们这一节中的内容,这里呢给大家讲三种这个情况啊,讲三种或者叫方式吧,第一个呢,就使用的叫show create啊这样的一种方式。
01:01
来收create这样的一种方式,好,那这我就把我把这个啊,那咱们就直接粘过来吧,哎,CTRLC一下。哎,这个呢,是咱们说的这个第三个事儿叫存储,嗯过程,哎,存储函数的它的一个,哎查看情况是吧,这个方式一啊,这个好像本身有一了啊,就直接我们这样,哎,这是第一种方式。使用呢叫show create语句呢,去查看这个存储过程,存储函数的这个创建信息行,那我们就直接呢啊收create,比如说我们查看一个存储过程吧,嗯,挑个比较短的吧,要show m GR的name是吧?哎,Show create,我们这是procedure。呃,叫受。MGR它的一个name是吧,哎,就这样个方式,我们去查看一下你这个存储过程,它的这样一个创建,来,我们选中来做一个执行。那是不是就这样子是吧,那同样的,我们要是查看一个函数呢,那就是受一个哎,Create function。
02:00
嗯,比如说咱们下边这个count ID吧。哎,是不是就这个意思啊,来我们选中了做一个执行。材质就出来了,只不过在这时候你可能看的觉得这个体验稍微差一点,那一般呢,咱们这时候查看的话都用这个杠G,但是在咱们这个呃,SQ药物当中,它这个就不支持了啊,所以我们在使用下命令行看一下啊CMD哎,MYSL哎,我们去登录一下。那登录成功呢,首先我们就使用一下叫DB test15是吧,这一张行,那么接下来的话呢,我们就可以呢使用这个了啊,比如我们这CTRL,呃,我先这么着吧。CTRLC对吧,来回过来在这粘过来,这个应该杠G。你看这个可读性呢,你看稍微的是不是就好一些,然后我们再把这个也拿过来啊,CTRLC。这样是吧,好,我们看一看这里边这个信息,嗯,这呢表达你是一个存储过程啊,这呢你是一个存储函数,它们各自的名称啊,这块都列出来了,Circle mode,这个我们到下边的时候呢,还会给大家去讲解,比如说你遵循的是这种这个宽松模式啊,还是这个严格模啊等等啊哎,再往下呢,就是创建的这个这个procedure,就是你当前的这个叫哎存储过程啊,是个创建者啊,Defender是吧,呃,DeFine DeFineer就是创建者嘛,是我们这个root用户创建的。
03:16
嗯,下边这块呢,是不是就我们整个这个存储过程的这个相当于这个代码呢,就嗯这个呢,也同样的道理,呃,谁创建的是吧?然后呢,具体这个函数的这个具体的里边的信息,呃,使用的这个客户端的这个字符集。呃,然后呢,这个比较规则啊,数据库的这个比较规则,你看这块呢,都列出来了,哎就是这样的一些信息,哎大家了解一下,就是你想看一下这个函数或者这个存储过程,这个逻辑是怎么写的,哎,可以使用我们当前这个指令。这个呢,是咱们说的这个第一种情况。嗯,第二种的话呢,我们可以使用呢,叫show status语句查看呢,这个存储过程或函数的它的一个状态的信息,哎,CTRL一下。来,我们粘过来。这样是吧,那具体的这个语法结构呢,是这样子的,受啊,你是个函数还是个过程,然后status,嗯,后边这个呢,是个中括号表示你可以不写,那不写的话呢,这块就展示的这个就比较多了,来举个例子啊,比如我们在这,哎怎么着呢,是不是受啊,咱们受叫procedure吧。
04:20
啊受procedure,然后接下来呢,是不是叫status是吧?哎,我就这么着一下来,我们选中来做一个执行。好,大家呢,你会发现呢,此时呢,你看运行出来这个结果呢,还是很多的,我们在自己的这个定义的DB test15里边数据库里边,我们去定义了这么多的这个存储过程,哎,然后你会发现呢,还有其他的一些数据库嘛,那定义的这些这个存储过程。对吧,哎,定义的这些存储过程好这个呢就知道了啊,嗯,所以这呢,就是能够显示出来的这个就比较多了,那如果你就想查看某一个怎么办呀,那我们可以这样啊,CTRLC一下。啊粘过来,然后在这块呢,我们是不是写这个类似于幕后查询了,然后在这里边我们去声明,比如说呢,我们想查看一下这是存储过程了啊找一个咱们这儿的show max salary。
05:08
那你就在这写,你要是能够很清楚的知道你要查的就是这个收这个max salary,你就这样写,你要不太确定的话呢,你该用这个,咱们讲这个模糊查询,你就用啊百分号啥的是吧,诶OK啊来我们选中执行。那这样呢,就把专门我们这一个,嗯,存储过程呢,就给我们列到这儿了。啊,就给我们列到这儿了。这个你要觉得这种可读性比较差的话呢,同样的道理,咱们可以把这个呢,CTRLC选中,我们在这里边去跑一下。啊,这个啊,清明的这个。哎,今天我们得给大家呃。我们这个这个这个哎,先得这么着一下是吧。这样清一下啊,还得重新登录啊。等一下吧。哎,又思一下,我们第一笔TEST15,好,哎,粘过来。嗯,杠,这。
06:01
这个呢,是咱们查了一个存储过程,来咱们再查一个函数吧。再查个函数,我们去收一下。Function。哎,Function,然后stay。嗯,Status是吧,然后再去like一下。嗯,这里边儿呢,我们查,再敲个email by ID。哎,还是那意思啊,就是你要这里边不确定的话呢,有些呢,你不熟了,你该加百分号,加百分号啊,它是支持模糊查询嘛,啊粘过来。没粘过来啊,重来。那这样可以了,行,然后这呢,呈现出来的信息呢,跟我们刚才呢,又有一些不同了,比如说呢,你当前你查看的你这个存储过程,你是哪个数据库里的呀,名字叫什么呀,呃,什么类型啊,存储过程类型的,那这个就是。这个就是函数类型的对吧,然后定义者是谁定义的呀,哎,是这个用户定义的啊,这个相当于最近的修改时间是什么,创建的时间是什么,这个咱们因为也没修改过,所以它俩一样啊,这呢同样的道理。
07:09
这个安全的这个级别。咱们在没有定义的情况下呢,就是咱们不是上面提到过定义这个存储过程或者这个函数的时候呢,哎,这个咱们是一直写到这个存储过程,这里边不是提到了一个characteristics是吧?然后这里边儿呢,就有这个,诶这个安全级别啊,是你定义者才能调还是说呢,你这个只要有权限的这个用户呢,都可以调,默认情况下呢,它不就是叫defender吗?诶,所以这块给我们看到就是这个defend是吧,Defend好,然后下边呢,这不有这个comment,就是你这个初始信息,因为咱们呢,定义的时候都没写过,所以这块就没有了,那如果说我们在定义这个存储过程或者函数的时候呢,咱们诶在这指明了你这个哎comment了。那有这个呃,注释信息了,哎,我们在刚才这个查看的时候呢,就能知道哦,我们定义这个存储过程,定义这个函数,那它是干什么用的,那相当于就在这块呢,给我们做了一个描述。
08:00
诶,给我们做了一个描述,OK,下面呢,还是这个一如既往的这个自如集压比较规则啊,这样的一个情况啊理解啊好这呢,就咱们说的这个第二种啊,使用这个show status,我们呈现出来的一些这个信息啊,接着我们看一下第三种。好,回到我们这个课件这块。第三种呢,这块就从我们这个information STEM这个数据库下呢,有一个叫呃routines啊这样的一个表,从这里边呢,来查看这个信息,来我们选中CTRLC。啊,从这里边呢,去查看就可以了。好,首先呢,我们来看下这里边说明说呢,存储过程和函数的信息啊,存储在我们叫information STEM这个数据库下的这样一个表里边,我们可以直接从这里边查就可以了。然后呢,你就select清啊,这个字段其实也挺多的啊,From,我们这个表where啊,Routine name就是我们这个存储过程或者函数的一个名,然后后边呢,And routine tap用指明呢,你是个过程啊,还是个函数啊,来在这说明,那如果我们后边不指明呢,你就只写个前面的啊这样的。
09:04
是不是这么着啊,然后在这里边儿呢,写上你这个存储过程或者是函数的一个名称,那比如我们想查询一下刚才这个email by ID吧。ID是不是这样写啊,哎,在我们这里边呢,咱们就哎我写成个分号了,哎,选中执行,哎你看这呢就出来了,那这个项呢,貌似更多是吧,貌似更多在我们这里边呢,看的这个体验度不是就更差一些吗?哎,来咱们同样的CTRLC一下回到咱们这个位置,然后粘过来。啊,粘的好像它这个。不能碰别的东西了啊,你碰这个又错了,行,我就重重新再粘一下。CTRLC。啊,这个对了,然后这个杠记一下是吧,好,那这个里边呢,给我们呈现出来这个信息量呢,就更大了,哎,更大了,这里边啊,具体的你看这个名字啊,等等等等等等等,这就很多了啊具体细节呢,我就不一个去讲了,那这里边呢,给我们呈现出来的个信息量比较大,这呢是我们查看的一个函数啊,你也可以呢,把它切换成是一个存储过程是吧?哎,后边呢,我们会发现呢,它还有一个这样说and啊routine type等于什么。
10:13
哎,我们这块呢,CTRLC粘过来。啊,对于咱们这个来讲呢,它这个tap呢,不就是一个函数嘛,哎,这块写的时候大家注意一下,你看我就写了一个函数,是不是用的小写呀,那么此时呢,你看我选中了做一个执行。大家你会发现它是不是就没有出来这个数据是吧,没有出来数据,那如果说你要改成这个大写的呢。Function来,我们再去执行,你看就出来了。啊,在这个位置呢,他还倒挺倔强的啊,就区分大小写了啊,以前咱们讲色Q的时候呢,在MYSQ里边啊,说这个单引号里边呢,它就没有阉格区分大小写,那这块呢,还是区分了这个一个小细节,大家关注一下,哎,关注一下,那么什么时候我们用这个呢?就是正常情况下呢,这个大家就不用写了。什么时候要用呢?就是如果呢,我们出现什么呀,存储过程跟存储函数咱们这个重名了。
11:03
啊,存储过程跟存储函数重名了,那这时候呢,你要查的时候呢,你说我就想查那个函数是不是,你后边补一个叫这个routine tap,哎,是函数,你要查一个存储过程呢,你后边补一个那个过程是这意思吧,哎,就行啊,那同样的存储过程呢,这个我们就哎再粘一个,比如说你这个叫show me salary啊,我们就这哎show一个。命的一个salary。然后这个位置呢,我们是不是就写上那个存储过程那个单词啊,是不是大家写一下,看你会写不procedure是吧?哎这样来我们选中的执行一把,哎这就出来了,哎你要是明明是个存储过程,你写成函数了,哎我们CTRLC粘过来,那显然呢,你要是没有这个函数的话呢,它不就空的吗。他不会报错对吧,那就是一个空的这样一个表述。啊,这个还改回来行,这呢,就是我们讲的这个查看的情况,那这里边儿我们讲了三种方式啊,大家根据自己的需要呢,你去做这个操作就可以了啊这个我加上一个吧。那叫方式。
12:00
123。嗯,像第一种方式呢,我们收create呢,咱们前面在呃造表啊视图的时候呢,也常用,对吧,收status其实也见过类似的用法,然后这个呢,找我们这个表也也用过,但只不过呢,呃用的是这个数据库下其他的表,而不是说我们这个呃,Routines这个表啊,其实整个呢,这个思路呢,应该是比较清楚的,好,那么接下来的话呢,我们看一看下一个问题。说呢,我们可不可以去修改这个存储过程和函数呢?是可以的。哎,这呢是可以的,所以呢,我们下边来谈一谈这个存储过程和存储函数的一个修改。我就简写了,直接写成函数了,这个修改注意这个修改呢,你别抱太大的期望啊,什么意思啊,比如说我们现在这呢,是不是就是一个函数是吧?有同学说,哎,老师我这里边这个呃,函数体呢,我写的有问题啊,这个呢,我们想来一个大改是吧,这时候改动的话呢,它呃改动的这个方式呢,还比较就改动的内容啊,是比较有限的,什么意思啊,比如我们这个呢,是叫count by ID哎,我们想改的是你这个函数体,那不好意思改不了。
13:04
啊,改不了啊,他说哎,那你这个修改修改那改啥呀?诶我们看一下我们此时的修改啊,不影响存储过程或函数的一个功能啊,那就意味着其实我们改的不是这个存储过程体或者是函数题了,我们只是修改它相关的一些特性。哎,咱们只是修改它相关的一些特性,就是咱们说那个characteristic。啊,就是改这个特性的。啊,就这么着,所以al procedure或者function,然后把你这个名往这一放,下边呢,就写它的这个特性,就是这个道理。啊,这具体这个特性呢,跟咱们上面讲这个特性这块呢,稍微有一些区别啊,稍微有一些区别。啊,就是这个呢,信息量会更少一点,这块是包含说你是不是有circle啊还是没circle啊是读啊还是写啊这个这个嗯,Security这个权限呢是不是,呃是调用者才能用,呃创建者才能用,还是说呢,调用者有权限才能用,哎加不加一些注释是吧?哎只有这样的一些信息。就有这样一些信息,这儿呢是我们讲的修改。
14:03
人家说哎老师,那我要是这个函数呢,我写完后呢,发现哎呀写错了是吧,不是这个表是另外一个表,那怎么办呀,那你就干脆呢,把这个函数是不是给它删掉以后呢,重新再造一个就行了呀,哎,这也是小事啊,我们现在所谓的修改呢,只是去修改这个特性的,哎,这个你要关注一下。好,那修改特性,咱们拿一个去开刀吧,拿一个开刀,咱们刚才讲这个第二种方式的时候呢,比如说提到过这个,它里边呢,会呈现那个,哎,那个就是注释的一个情况是吧,那我们比如说就针对于他来来操作一下,哎怎么来做呢?是不?我们叫alter是吧?答案是procedure。嗯,谁呀,这个是吧。哎,Al procedure,他然后接下来怎么写啊,哎下边呢,就是这块你去写你具体的这些,哎叫什么呀?哎这个约束的这个情况了,比如说我们给他加一个。加这个吧,哎,Circle quality,咱们让这个evoer可以进行调用的。在这啊。
15:03
是有可调用的,然后呢,我们再加一个,呃,这个comment。嗯,这呢,我们说这个是叫嗯查询。嗯,我们看下这个函数啊,这个是咱们的存储过程了,当时是吧,查询这个我就就这块儿翻翻写一下,查询最高工资。理解是吧,好,这块我们选中来做一个执行。走起。可以了啊,哎,这个长按以后的话呢,然后啊,这个我相当于是做了一个修改,大家回过来咱们那会儿呢,在这块,哎呀,这个我好像清过屏哈,咱们就重新的再去做一个这个。查询啊,针对于它对吧,哎,CTRLC一下,哎回过来。调过来,这又又给整不对了啊。后来。哎,把这个呢,我们CTRLC。诶粘一下好,但是你看我们刚才呢,是不是加了一个comment,要查询最高工资,你看就显示上了,然后呢,这个安全级别的话呢,我们是调用者,就是你只要有权限的话呢,也都可以去调我们这个存储过程,那这呢就相当于我们做了一个修改。
16:09
啊比较简单,这呢我是以这个存储过程来演示的,需要呢改函数,你就去al这个方式,函数名下边呢去加就完事啊就完事,好这个我就不去再测试这个所谓的函数了啊啊处理旁通就行,然后接下来的话呢,这就更简单了,我们看一看如何去删除咱们所谓的。存储过程或函数呢?啊,这个跟前面的套路啊,都是一样的啊,你想删什么就是job什么啊,这个procedure或者是function,然后呢,加上你这个名就完了,然后确保呢说这个别报错,你可以加上点ifit,如果要存在呢就删,不存在呢就默默结束那就好了。行,这个呢,就我们删除。的存储过程。函数的这个,哎,删除这个操作啊,这就像我刚才讲的,如果你说呢,我这个函数的定义的这个函数题有问题怎么办呀,你可以把你这个函数呢先删掉,然后呢,你再重新的创建一个就完事了。
17:03
哎,就是这个道理,好,那此时的话呢,我们去做这个这个drop是吧,Drop一个具体的比如function。嗯,删一个,比如第一个吧。哎,我们叫count by ID啊,比如说这块你多写了个D,那此时呢,要删除呢,显然是不是就没有啊,它就报错了,说你这个方式呢是不存在的,那你要加上了叫if。啊,这个exist是吧,哎,你要存在的话,那我们就删掉,那这个执行操作呢,它就不会报错了。你看它就不会报错了,是不是就好一些,呃,建议大家你加上这叫一一个Z行,那么我们这时候呢,有这个函数,咱们执行一把。哎,这就执行成功了,然后呢,我们这时候在F5刷新。是不是就没有了?哎,我们就给删掉了是吧?哎,那接着的话呢,我们可以召回一下consider。哎,然后呢,叫if exist。哎,删除一个存储过程吧。嗯,比如说我们拿这个寿命salary。
18:03
哎,是不是这样来,我们选中呢,执行一下。好可以了,然后这时候我们在F5刷新一下看15。诶,是不是就干掉了行,这个呢,就是我们删除这个存储过程或函数的这个方式啊,比较简单啊,这个呢,我们也就过了,呃,那么关于存储过程跟函数啊,咱们基本的使用呢,咱现在就说到这儿了,下一章呢,咱们在存储过程和函数里边讲这个变量流程控制和U标啊,主要呢,针对就是这个函数体和这个存储过程体了,哎,我们讲的内容呢,会更丰富一些啊,说白了就下一章呢,其实还是这个存储过程跟函数的一个使用。啊,一个使用了,呃,那么在我们这个15章最后啊,咱们先来谈一谈这样的一个严肃的问题。有点严肃了,关于存储过程或者是存储函数的一个争议啊,我这呢只写过程函数,也包括了一个争议,什么叫争议呢?你看我这里写的,有些公司对于大型项目的要求去使用存储过程。啊,像咱们商谷毕业的同学呢,呃,也有很多呢,跟我也提过,说老师呢,这个,诶我们在银行,在证券系统里边,现在让写这个存储过程呢,这个有点不太熟是吧,不太好写,说应该看看什么资料啊,诶咱们这块呢,这不就在录这套视频嘛,是吧?哎,讲这些基本的语法了啊呃,那么在有一些公司当中啊,也明确禁止这个开发者呢,去使用这个存储过程或者存储函数。
19:24
啊,你看明确禁止的这个呢,是要求你去写的,那发现呢,是不是天壤之别啊啊,那到底说我们应该怎么看待这个存储过程呢?哎,或者叫存储函数呢?哎,主要这块呢,得基于它的优点和缺点。那优点呢,肯定是鼓励你用的时候呢,看中的是优点,那禁止你用的话呢,它更多的看到的是存储过程或存储函数的缺点,对吧?好,那优点我这呢列举出来了几条。大家呢,看看有没有这个共鸣啊,第一个说存储过程呢,可以一次编写多次使用,一次编译多次使用,哎,我们编写完以后的话呢,注意咱们把这个存储过程也好,储函数也好,这呢,比如说是这个客户端,哎,咱们是不是放到这个叫DBMS里边了。
20:03
啊,DDMS就数据库管理系统里边,我们服务器里边呢,存放的这些函数,或者是呢,存储过程,而且呢,他们编译一次,就在你最初定义的时候呢,我们去编译好了,就是咱们这个SQL语句呢,也是需要里边这个也是需要去编译的啊编译完以后的话,它就不需要再去编译了,所以呢,就是只能只需要一次编译。而你要是每次都是传不同的circle给我们这个服务器的话呢,每次服务器都需要去编译,这也需要花时间的,我们这儿呢,只需要编译一次,以后呢就直接用就行,所以效率会更高一些是吧。然后下边呢,就提到了说减少开发的工作量了,这个当然了,就是你这个提供函数也好,提出提供这个存储过程也好,你都给造好了,我们封装到里边直接拿来用就行,是不是当然减少工作量了。是吧,哎,加压工作量,包括下边就呃,提供了良好的一个封装性,他说的也是这个。啊,我们呢,直接通过远程的方式呢,客户端去连接这个服务器,在服务器里边连接一次一调用啊就OK了啊,良好的封装性啊。
21:02
下面呢,提到说这个存储过程安全性也比较强,我们呢,诶刚才也去修改了,说你是这样,只有这个创建者才能调,还是说呢,这个有权限的人也能调啊,所以他还可以去设置这个权限的问题,那我们试图的话呢,也可以去设置。那像这些权限的话呢,咱们在这个下篇当中,咱们会去讲这个什么呀,叫用户是吧,用户与权限。啊,这个在下篇里边,我们有一张这个啊,用户与权限管理,包括呢,在咱们,呃,数据库的新特性里边,还加入了一个角色啊,虽然说Oracle呢,很早就有角色的概念了。啊,我们卖呢,加的晚一些。但总之呢,还是有了对吧,哎,我们呢,可以去创建相关的用户,并且给他赋予相关的权限,让他呢,呃,有权限的人去访问视图,访问我们的这个存储过程。啊,这个注意。这个就是安全性会更强,然后呢,减少了网络的传输量啊,因为我们是放在这个服务器里边了是吧,减少传输量了,良好的封装性,OK,这个呢,都是算它的优点。
22:01
啊,这个就说白了哈,就是我们之所以鼓励大家去使用呢,你就想一下,嗯,像比如说像Java也好啊,还有其他的这个啊,比如像Python也好,哎,他们提供了一些呃函数是吧,诶用户呢,想用的话呢,直接来调这个函数就行了,那当然这优点呢会很多呀,不用你每次自己写啊。对吧,啊,就是这样的一个场景,就直接封装好了。哎,那这呢,就是它的所谓的优点啊,那么缺点是什么呢。缺点像咱们国内的阿里啊,这我是也是找的阿里这个开发规范明确是叫强制执行的啊,诶引用的这个字眼呢,叫做禁止,禁止使用存储过程啊,因为它难以调试扩展和没有一致性。你就说哎呀,那我在国内混的,那我就别学这个存储过程了,注意人家呢,有这一条约,约定的话呢,呃,对于开发者呢,确实不用存储过程了,但是呢,做开发的这些人呢,他们其实都还是懂存储过程的。就是你可能没有用存储过程,但没有用的呢,有两种情况,一种呢是你根本就不会,这是一种场景,还有一种呢是你会,但是呢我没有用。
23:05
它是不是两种境界呀?哎,所以说呢,你别看到阿里有这样规范以后的话呢,你说啊,那我就不学了是吧,那我建议你呢,你还是就是该学还得学,因为你也不一定说就在这个公司待一辈子啊,对于有一些公司来讲,他可能要用,就是你该学还学,只不过学完以后的话呢,他不让用,那我就不用了,哎,你知道他什么原因造成的。啊,哎,就可以了,就是哎,我们要达到一个更高的一个境界是吧,就是掌握存储过程呢,还是属于我们程序员的一个必备的数质之一,就我们在学这个数据库的时候啊,这也属于一个哎章节的内容啊。好,那么它的缺点是什么呢?可移植性比较差。因为不同的数据库当中啊,它这个知识的力度啊是不一样的啊,可一致性比较差,哎第二个问题也是我们其实比较看重的一个点,就是它的这个调试啊是非常困难的。啊,大家会发现我们现在写的这个存储过程或函数,其实代码量比较小,哎,主要呢,就针对这个函数体或者是存储过程体。
24:01
啊,增重光程体这个我们多的话呢,写成大几十行甚至上百行,这个都是有可能的,而且互相嵌套着用,可能会很复杂,那一旦呢,你要出错以后呢,咱们没有这个非常好的像Java呀,诶或者是这个Python啊,勾语啊等等,他们有非常好的这种集成开发环境啊,包括呢,像c shop等等的,呃,那么给我们很好的这种调试工具啊,他这没有,那我们这时候调试会很困难,咱们上面也提到过,这个调试的话呢,甚至有可能是不是你要逐行的,诶一行一行的去拿这个色QL自己去单独的调试是吧?哎,这个所以很困难调试啊。嗯,再者的话呢,这个版本管理呢,也很困难。啊,开发软件的话呢,我们通常呢,都需要进行这个版本的一个控制啊,那对于存储过程来讲,它本身没有存储,它本身没有这个版本的控制,那你要迭代的话呢,到底这几个版本该怎么去选择呀,这又是很乱的一个事儿,再者的话呢,在这个高并发的场景下呢,它能够增加我们这个数据库的压力。那我们这个高并发的时候呢,都采用了这个分库分表啊,这读写分离等等这样的一些操作啊,那在我们这个场景下的话呢,我们用存储过程呢,呃,是难以做维护的啊,这呢就是它的一些弊端。
25:09
啊,就是我刚才讲的一样,哎,禁止使用的呢,肯定是更多的看到是它的弊端,那鼓励使用的呢,更多的看到的是它的优点,它就是一把双刃剑。诶就是一把双刃剑,用好的话呢,那当然很好,用不好的话呢,那就伤及自身,还不如不用是吧?诶就是这个道理,所以说呢,整个导致呢,我们对它的态度呢是不一的,大家需要整个清楚这个事儿啊,那么到底该不该用呢?啊,如果大家你是刚开始学习这个MYQ呢,诶你也没有决策权,到公司以后呢,你就看这个项目经理,他说让用那就用,他不说让,他说让不用,那你就不要用了,哎,就是这么简单,OK。
我来说两句