From dda8bade6caa49385a2ab03c94adf91544ebe949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=B9=B3?= <2466629710@qq.com> Date: Sun, 25 Sep 2022 16:19:31 +0000 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张平 <2466629710@qq.com> --- .../\345\207\275\346\225\2602022-09-21.md" | 69 +++++++++++++++++++ .../\346\255\273\351\224\2012022-09-22.md" | 23 +++++++ 2 files changed, 92 insertions(+) create mode 100644 "35-\345\274\240\345\271\263/\347\254\224\350\256\260/\345\207\275\346\225\2602022-09-21.md" create mode 100644 "35-\345\274\240\345\271\263/\347\254\224\350\256\260/\346\255\273\351\224\2012022-09-22.md" diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\345\207\275\346\225\2602022-09-21.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\345\207\275\346\225\2602022-09-21.md" new file mode 100644 index 0000000..efb3dae --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\345\207\275\346\225\2602022-09-21.md" @@ -0,0 +1,69 @@ +## 函数 + +函数分为(1)系统函数:,(2)自定义函数(方法:将一个功能封装成可重用的函数)。 + +其中自定义函数又可以分为(1)标量值函数(返回单个值),(2)表值函数(返回查询结果) + +本文主要介绍自定义函数的使用。 + +#### 标量值函数 + +语法结构: + +```sql +CREATE FUNCTION function_name(@parameter_name parameter_data_type) --(@参数名 参数的数据类型) +RETURNS date_type --返回返回值的数据类型 + +[WITH ENCRYPTION] --如果指定了 encryption 则函数被加密 + +[AS] + +BEGIN + + function_body --函数体 + + RETURN 表达式; + +END +``` + +定义函数要求实现: + +实现两个值的加和 + +使用函数求某门课的平均成绩 + + + +#### 表值函数 + +语法结构: + +```sql +create function 名称 + +([{@参数名称 参数类型[=默认值]}[,n]]) + +returns @局部变量 table(参数名 参数类型) + +[with encryption] + +[as] + +begin + +函数体 + +return 函数返回值 + +end +``` + + + +删除自定义函数 + +```sql +DROP function 函数名 +``` + diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\346\255\273\351\224\2012022-09-22.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\346\255\273\351\224\2012022-09-22.md" new file mode 100644 index 0000000..2237ad1 --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\346\255\273\351\224\2012022-09-22.md" @@ -0,0 +1,23 @@ +### SQL Server数据库[死锁](https://so.csdn.net/so/search?q=死锁&spm=1001.2101.3001.7020),通俗的讲就是两个或多个trans,同时请求对方正在请求的某个实际应用对象,而导致双方互相等待。简单的例子如下: + +### + +sql server死锁表现一: + +>    一个用户A 访问表A(锁住了表A),然后又访问表B。 +>    另一个用户B 访问表B(锁住了表B),然后企图访问表A, +>    这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了,同样用户B要等用户A释放表A才能继续,这就造成死锁了。 + + +  sql server死锁解决方法: +   这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法 +   仔细分析你程序的逻辑, +   1:尽量避免同时锁定两个资源 +   2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源. +   +**sql server死锁表现二:** + +>    用户A读一条纪录,然后修改该条纪录。 +>    这时用户B修改该条纪录,这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释 +>    放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。 +>    这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。 \ No newline at end of file -- Gitee