diff --git "a/13 \346\264\252\347\201\277\350\212\263/\347\254\224\350\256\260/Sql server \351\253\230\347\272\247\347\254\224\350\256\260.md" "b/13 \346\264\252\347\201\277\350\212\263/\347\254\224\350\256\260/Sql server \351\253\230\347\272\247\347\254\224\350\256\260.md" index bb5f0705d748558f10202193a6dfb81771ca42ce..42cb3e431db1fd5d14d591f27d2f86de7b1af904 100644 --- "a/13 \346\264\252\347\201\277\350\212\263/\347\254\224\350\256\260/Sql server \351\253\230\347\272\247\347\254\224\350\256\260.md" +++ "b/13 \346\264\252\347\201\277\350\212\263/\347\254\224\350\256\260/Sql server \351\253\230\347\272\247\347\254\224\350\256\260.md" @@ -569,7 +569,7 @@ select * from V_StuAge 用全局变量@@ERROR (这个函数如果上一条语句发生错误,会返回错误代码)借此特性可以用变量来获取@@ERROR进行判断 -### 12.5 事务联系 +### 12.5 事务练习 ```sql 1.--假设刘备取款6000,(添加check约束,设置账户余额必须>=0),要求:使用事务实现,修改余额和添加取款记录两步操作使用事务 @@ -622,3 +622,76 @@ else end ``` +## 13 游标 + +### 13.1 游标的分类 + +(1)静态游标(Static):在操作游标的时候,数据发生变化,游标中数据不变 + +(2)动态游标(Dynamic):在操作游标的时候,数据发生变化,游标中数据改变,默认值。 + +(3)键集驱动游标(Key Set):在操作游标的时候,被标识的列发生改变,游标中数据改变,其他列改变,游标中数据不变。 + +### 13.2 创建游标 + +``` +declare <游标名> cursor scroll for 查询的语句 +``` + +### 13.3 使用游标 + +``` +--打开游标 +open 游标名 +--关闭游标 +close 游标名 +--删除游标 +deallocate 游标名 +--提取游标数据 +fetch first from <游标名> --第一行 +fetch last from <游标名> --最后一行 +fetch absolute 1 from <游标名> --从游标的第一行开始数,第n行。绝对的 +fetch relative 3 from <游标名> --从当前位置数,第n行。相对的 +fetch next from <游标名> --当前位置的下一行 +fetch prior from <游标名> --当前位置的上一行 +``` + +## 14 函数 + +### 14.1 什么是函数 + +sql 内的函数可以分为内置函数 和 自定义函数 + +内置函数 即sql 中自带的函数不需要我们编写 直接就可以调用 例如 gatdata() + +自定义函数 可以理解为面向对象中的方法,将一个常用的功能封装起来,提高重用性,降低代码的重复性 + +### 13.2 标量值函数 + +``` +create function 名称(@参数名 数据类型) +returns date_type --返回返回值的数据类型 +as +begin + 函数体 + return 表达式; +end +``` + +### 13.3 表值函数 + +``` +create function 名称 +returns @局部变量 table(参数名 参数类型) +as + begin + 函数体 + return 函数返回值 + end +``` + +### 13.4 删除函数 + +``` +drop function 函数名 +```