Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
a5049ff0
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a5049ff0
编写于
4月 11, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
96833e41
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
123 addition
and
1 deletion
+123
-1
blog/php-mysql/sql-function.md
blog/php-mysql/sql-function.md
+66
-1
blog/php-mysql/sql-variables.md
blog/php-mysql/sql-variables.md
+57
-0
未找到文件。
blog/php-mysql/sql-function.md
浏览文件 @
a5049ff0
...
@@ -284,4 +284,69 @@ drop function my_func1;
...
@@ -284,4 +284,69 @@ drop function my_func1;
select
字段
into
@
变量
;
select
字段
into
@
变量
;
```
```
https://www.bilibili.com/video/BV1Vx411g7uJ?p=70&spm_id_from=pageDriver
## 3、函数流程结构案例
需求:
从1开始,直到用户传入的对应的值位置,自动求和,凡是5的倍数都不要
设计:
1.
创建函数
2.
需要一个形参,确定要累加到什么位置
3.
需要定义一个变量来保存对应的结果
4.
内容部需要一个循环来实现迭代累加
5.
循环内部需要进行条件判断控制,5的倍数
定义函数
```
sql
-- 创建一个自动求和的函数
-- 修改语句结束符
delimiter
$$
-- 创建函数
create
function
my_sum
(
end_value
int
)
returns
int
begin
-- 声明局部变量
declare
res
int
default
0
;
declare
i
int
default
0
;
-- 循环处理
mywhile
:
while
i
<=
end_value
do
-- mysql中没有++
set
i
=
i
+
1
;
-- 判断当前数据是否合理
if
i
%
5
=
0
then
iterate
mywhile
;
end
if
;
-- 修改变量,累加
set
res
=
res
+
i
;
end
while
;
-- 返回值
return
res
;
end
-- 结束
$$
-- 修改语句结束符
delimiter
;
```
调用函数
```
sql
-- 实参个数必须等于形参个数
select
my_sum
(
10
);
```
https://www.bilibili.com/video/BV1Vx411g7uJ?p=72&spm_id_from=pageDriver
\ No newline at end of file
blog/php-mysql/sql-variables.md
浏览文件 @
a5049ff0
...
@@ -134,3 +134,60 @@ mysql> select @name, @age;
...
@@ -134,3 +134,60 @@ mysql> select @name, @age;
```
sql
```
sql
declare
变量名
数据类型
[
属性
];
declare
变量名
数据类型
[
属性
];
```
```
## 4、变量作用域
变量能够使用的区域范围
### 4.1、局部作用域
declare 关键字声明 (结构体中使用:函数/存储过程/触发器)
declare关键字声明的变量没有任何符号修饰,就是普通字符串,如果再外部访问该变量,系统会自动认为是字段
### 4.2、会话作用域
用户定义的,使用@符号定义的变量,使用set关键字
会话作用域,当次连接有效只要再本连接中,任何地方都可以使用(可以在结构内容,也可以跨库)
会话变量可以再函数内部使用
```
sql
set
@
name
=
'张三'
;
create
function
get_name
()
returns
char
(
4
)
return
@
name
;
select
get_name
();
+
------------+
|
get_name
()
|
+
------------+
|
张三
|
+
------------+
```
会话变量可以跨库
```
sql
use
mydatabase2
;
mysql
>
select
@
name
;
+
--------+
|
@
name
|
+
--------+
|
张三
|
+
--------+
```
### 4.3、全局作用域
所有的客户端,所有的连接都有效,需要使用全局符号来定义
```
sql
set
global
变量名
=
值;
set
@@
global
.
变量名
=
值
;
```
通常,在sql编程的时候,不会使用自定义变量来控制全局,一般定义会话变量或者结构中使用局部变量来解决问题
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录