00:01
好,存储过程说完了,咱们就说数据库中的函数了。呃,函数的概念呢,基本上可以理解为就是Java中的方法。哎,刚才的存储过程,刚才的存储过程我说可以理解为是方法,但不是哈,这句话给大家记录下来。存储过程。类似。Java中的方法。模式。而函数。函数。就是Java中的。方法二者的区别是什么呢?是。返回值。区别是返回值。存储过程。它因为没有返回值。而方法呢是具有。
01:07
买回的。OK。所以说函数就是方法,而存储过程呢,可以理解为是方法,但呢,不是因为没有返回值。OK。好,那咱们接下来呢,就用函数写一下刚才这个问题。都哪去了?啊,函数是吧,那函数的定义呢,这个代码呢,还是你看我写就好了,好吧,看我写啊。好,接下来呢,咱也是创建一个函数两个number类型。比较呃,返回比较大的那个值。返回比较大的那个值,好先看上面这个啊。来吧,创建一个函数。好创建函数呢,就是create或者也替换诶。Replace。
02:00
对吧,刚才存储过程是procedure啊,哎,函数的关键字。Function。好了,然后呢,起个名get max,哎,跟刚才测试过程是一样的。好,我先叫这个名,然后写参数。一个是X number。一个是Y。好,基本上代码没啥区别哈,它是begin and。比较。X如果大于Y。走。对吧。然后else。And if。代码没没没有区别啊,写一下啊这个输出的。不知道。好这个输出吗?你看我提你咋说的。返回了,哎,应该应用特啊,那么X这里面进入这里边的话,是不是X大呀。
03:05
返回来了。这个呢?OK。但是呢,咱们在Java里边都知道,我如果有一个方法需要返回值的话。Return。是吧?想要返回值,比如说返回个十,那么这个word是不是应该改成相应的类型啊?那你看咱们这个函数里边创建的时候,我返回X或者返回Y,这里边儿体现出我返回的这个类型了吗。就是在这一块根本没有声明出来哈,记着啊,在创建函数的时候,后边要写个特。表示你返回值的类型,好吧。好,那咱返回的X和Y都是啥类型。Number,所以后边写上return。行了吧,好了,来把这个函数执行一下F5。
04:02
咋整替换还不好使了呢?因为它不能跨域替换,为啥嘞。因为get max,它是什么呀?之前的叫是不是叫存储过程啊。而现在你创建的是啥玩意儿?函数哈,它不能跨跨这个技术去替换,好吧,所以呢,这块咱们给它改个名吧。改个什么名儿呢?Getmax。加个F。表示函数吧,F get行吧。好,来F5执行。创建成功。创建成功函数是吧,好了来,那这个玩意儿怎么调它呢?其实之前咱们学过函数的调用。写一个。
05:04
还记得吗?干啥的?字符串的长度吧。这就是函数的调用啊,只不过现在这个函数变成了啥了,变成了我定义的吧,所以把函数名放在这儿,然后里边的参数变成了什么两个值吧,来传值传。五和六。执行返回较大的值为六。没吧?这就叫函数,所以说之前咱们学的那么多,咱们字符串函数啦。还有什么啊聚合啦,是不是都叫函数啊,而且是不是都用flag来调用的。OK,现在咱们是不是也能自己定义函数了?就这么高行吧,这就是咱们的函数的调用了。再看一下它的写法跟之前有什么区别?这不一样。这儿不一样。剩下的有还有啥区别吗?
06:02
没有啥区别了是吧,哎,这个就是函数了。好,那我接着把下边这个呢也写了。你看下面这个怎么说的,他说参数呢,也可以指明方向。咱们之前参数指明方向,是不是存储过程里边啊,可以用in,是不是可以用out呀。来看我现在这个需求。免得来回切哈,我把这个需求放在上边。编写一个函数,传俩值返回其中较大的。这没问题吧,是不是就是这个。好,后边来了,并且将两个参数的和。存放到第二个参数中。在代码中不能使用第三方变量。这啥意思呢?就是说这里边你不能再声明个Z了,如果声明个Z的话就简单了是吧。
07:05
不能有Z,还要完成这个功能。好,来看看这个功能到底怎么写啊,看着。返回其中较大的值,现在的程序是不是已经已经搞定了,再看第二句话啊,两个参数的和。存到第二个参数中。啥意思啊,是不是把这两个和放在就是X加Y。等于Y是吧,哎,那咱们应该怎么去写一下呢?就是说我不管你俩谁大。我是不是都应该把这个两个数的和放在第二个变量里啊?OK,我这块隔开啊,让大家看清晰一点,这是if结构啊,看好了,首先如果是if里边的话,我应该干嘛?Y等于X加Y,是不是就是我这句话的意思。OK,把它改成数据库的代码。
08:01
没毛用啊。OK,然后呢,再看。我返回X行不行?啊,往里传值。X现在这个X3这个是一。三大于一没毛病吧?好,Y得几了,这会儿。四没毛病吧,好,返回的值是几?是不是三啊?返回的是不是他俩较大的值啊?没毛病吧,对不对,符不符合题意啊。好,咱再看else啊。Else。XY还是等于?X加Y,然后呢,它返回一个Y,这行吗。这回不行了吧,看了啊啊到这儿的话,那应该是Y较大是吧,那值就是一三看着啊。就是X等于一,Y等于三是不是走L啊。看到了啊,那这个歪现在是几了。
09:01
是不是变四了?然后你返回,你返回的是不是四啊对吧。四是一和三里面的其中一个吗?不是吧,我必须这块要返回三对吧,所以这块应该怎么做呢。是把X再减出去啊哎。OK,就这样写。先返回有这个操作吗。来。就咱就写Java。这块直接return return一个零,然后下边我说输出一句话。有这个操作吗。这这个操作你一写出来哈,这段代码就报红线了。因为为什么呢。哎,Return的下边是不能写任何代码的。
10:01
他Java程序报什么错呢?说这句话是无法访问到的代码,所以给你报错。这得注意了啊,所以刚才咱们必须得先计算后返回吧。OK,好,这个程序呢,我已经写到这儿了,现在他执行来,现在我能不能给他替换了。来F5执行报错了。又是什么错呢?还是之前那个错哈,因为在这个位置,我这是干嘛呢。改变Y,而这个Y默认什么呀?只读吧。只读吧,而现在我应该给它改成什么呢?哎,改成之前咱们的这种。模式只读只写不行,他俩太唯一了,我直接来一个最大的权利,OK。所以在Y这个位置。可读。
11:01
可信,OK,这回呢,咱们再次执行这轮代码F5。成了吧。哎,成了完了,那咱们怎么调这个呢。这回掉这样掉,能掉了吗?肯定不行啊,不行啊,我那个这是我这个那个这个盒怎么接收啊。对吧。你现在这么执行,返回的是不是他俩的最大值啊,但是我和你在哪给我显示了。怎么办呢?这么叫了啊?点声明代码块了,就写着代码块了。D。Begin and。好,来一个比较大的值。这样啊,你看我把这XY全都声明出来,X。等于十。WHY?等于20,是不是还有一个和呢?
12:01
Number不知道。我看。然后调用函数get,不是叫啥f get max,将F和Y传进去。看到了吧,然后这个函数最终的返回值是有返回值的,对吧。所以这个函数我最终可以用一个值来接收。用什么来介绍,用盒去手?方法返回啥呀。返回的是啥,是不是较大的那个值啊。啊,这个和这个和还和和什么呀,叫max吧,叫v max。哎,定义错了,我的意思是这个啊。好吧。哎,冒号。可以吧,将两个值传进去,返回较大的值。好吧,输出。BBMS呢,没有?
13:02
看着我这输出什么。两个数的和为一个值。然后逗号隔开。较大的。直是。OK,把这两个换成变量呗。第一个两个数的和,我不是把两个数的和放在Y里边了吗?看这。对不对,对吧,所以第二个参数就是两个数的和Y。两个数较大的值谁呀?We max。这个代码执行吧,执行。重来。没问题吧?我这十和20,脚大的是20,两数的和30对吧。OK。
14:01
所以说在这里边儿咱们再补个刀。还啊,存储过程中。啊,存储过程类似加法的方法,但不是因为没有返回值。用。参数的模式。表达。返回值。是这个意思吧。而在咱们Java函数呢,它具有返回值,而且还有参数的模式。也就是说。函数是不是比存储过程更加强大一些啊?对吧,因为存储过程只有参数的模式一个,而函数有什么呀,不仅有参数的模式,还有返回值。OK。这就是他俩的区别。好,这段代码呢,咱们搞定了。
我来说两句