diff --git "a/17 \344\276\257\351\224\237\351\223\226/\347\254\224\350\256\260/10-9.21\345\207\275\346\225\260.Markdown" "b/17 \344\276\257\351\224\237\351\223\226/\347\254\224\350\256\260/10-9.21\345\207\275\346\225\260.Markdown" new file mode 100644 index 0000000000000000000000000000000000000000..3e2592e15a3185d1b884c0060b7232573a40d02a --- /dev/null +++ "b/17 \344\276\257\351\224\237\351\223\226/\347\254\224\350\256\260/10-9.21\345\207\275\346\225\260.Markdown" @@ -0,0 +1,38 @@ +# 函数 +### 什么是函数 +sql 内的函数可以分为内置函数 和 自定义函数 + +内置函数 即sql 中自带的函数不需要我们编写 直接就可以调用 例如 gatdata() + +自定义函数 可以理解为面向对象中的方法,将一个常用的功能封装起来,提高重用性,降低代码的重复性 +### (1)系统函数:, + +### (2)自定义函数(方法:将一个功能封装成可重用的函数)。 + + (1)标量值函数(返回单个值) + (2)表值函数(返回查询结果) + +### 标量值函数 +```sql +create function 名称(@参数名 数据类型) +returns date_type --返回返回值的数据类型 +as +begin + 函数体 + return 表达式; +end +``` +### 表值函数 +```sql +create function 名称 +returns @局部变量 table(参数名 参数类型) +as + begin + 函数体 + return 函数返回值 + end +``` +### 删除自定义函数 +```sql +drop function 函数名 +``` \ No newline at end of file diff --git "a/17 \344\276\257\351\224\237\351\223\226/\347\254\224\350\256\260/9-9.20\346\270\270\346\240\207.Markdown" "b/17 \344\276\257\351\224\237\351\223\226/\347\254\224\350\256\260/9-9.20\346\270\270\346\240\207.Markdown" new file mode 100644 index 0000000000000000000000000000000000000000..db88e062849f7bd74108ca58ac93a5c09bb20ffa --- /dev/null +++ "b/17 \344\276\257\351\224\237\351\223\226/\347\254\224\350\256\260/9-9.20\346\270\270\346\240\207.Markdown" @@ -0,0 +1,44 @@ +# 游标 +### 1、什么是游标 +游标是指向一个查询结果集的一个指针,是通过定义语句和一条 SELECT 语句关联的 SQL 语句; +游标的实际上是从一种包括多条数据记录的结果集中每次提取一条记录的机制 ; +游标中包含游标结果集和游标位置两项内容,用户能使用游标查看结果集中向前或 +向后的查询结果,也能将游标定位在任意位置查看结果; +在 SQL Server 中,数据都是通过结果集的方式操作的,并没有描述表中单条记录的表达形式, +只能通过 WHERE 子句来对查询结果进行限定,使用游标能弥补了这种操作上的空缺,使得数据在操作过程中更加灵活; + +### 2、游标的作用 +优点: + + 1、使用游标能对 SELECT 返回数据集中的每一条数据做相同或不同的操作,而非对数据集中的所有数据做同一个操作; + 2、使用游标能对基于游标位置的数据进行更新和删除; + 3、游标能很好地将数据库与程序连接起来; +### 游标的分类 + (1)静态游标(Static):在操作游标的时候,数据发生变化,游标中数据不变 + (2)动态游标(Dynamic):在操作游标的时候,数据发生变化,游标中数据改变,默认值。 + (3)键集驱动游标(KeySet):在操作游标的时候,被标识的列发生改变,游标中数据改变,其他列改变,游标中数据不变。 +### 3、游标的使用 +```sql +--创建游标 +declare <游标名> cursor scroll for select stuname from stuinfo +--Scroll代表滚动游标,不加Scroll则是只进的,只能支持fetch next +--打开游标 +open <游标名> +--关闭游标 +close <游标名> +--删除游标 +deallocate <游标名> +``` +```SQL +fetch first from <游标名> --结果集的第一行 +fetch last from <游标名> --最后一行 +fetch absolute 1 from <游标名> --从游标的第一行开始数,第n行。 +fetch relative 3 from <游标名> --从当前位置数,第n行。 +fetch next from <游标名> --当前位置的下一行 +fetch prior from <游标名> --当前位置的上一行 +``` +修改数据 +```sql + fetch absolute 3 from <游标名> + update 语句 where Current of <游标名> +``` \ No newline at end of file