sql中的常见报错;
1.对于某些写的sql懒得判断的;
SELECT * FROM sys_part WHERE part_no =(SELECT part_no FROM dbo.sys_part) --字查询的结果存在多行
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
对于错误代码:512
SELECT TOP 10 * from sys.messages WHERE message_id =512 --可以查询到一些对于此错误的不同语言描述,不用翻译了;
--对于sql中执行的sql语句记录可以用如下进行查询,不过对于上面的错误内容查询不出来.......:
SELECT TOP 100
ST.text AS '执行的SQL语句',
QS.execution_count AS '执行次数',
QS.total_elapsed_time AS '耗时',
QS.total_logical_reads AS '逻辑读取次数',
QS.total_logical_writes AS '逻辑写入次数',
QS.total_physical_reads AS '物理读取次数',
QS.creation_time AS '执行时间' ,
QS.*
FROM sys.dm_exec_query_stats QS
CROSS APPLY
sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE QS.creation_time BETWEEN '2019-03-01 00:00:00' AND '2019-04-02 11:00:00'
ORDER BY
qs.creation_time DESC
2.对于语句没有异常处理的情况,多个sql写在一起抛给服务器会认为是独立的进行处理,如有异常不会终止,如下:
--没有异常捕捉的情况
PRINT 'first'
SELECT 1/0
PRINT 'second'
--执行结果:
first
Msg 8134, Level 16, State 1, Line 3
Divide by zero error encountered.
second ----异常之后的语句依然执行了
---具有异常捕捉的,异常之后的语句可以停止执行
BEGIN TRY
PRINT 'first'
SELECT 1/0
PRINT 'second' ---此语句不会执行;
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH
--执行结果
first
(0 row(s) affected)
Divide by zero error encountered.
3.对于mssql中事务添加示例,尽量对于连贯的业务,如果要将逻辑写在数据库中的话,还是要采用事务的方式,防止发生异常后,数据错乱,导致问题更加验证;
-------创建需要验证的表及其数据
--CREATE TABLE temp_table
--(
-- id INT IDENTITY(1,1),
-- actymd VARCHAR(10),
-- acthms VARCHAR(10)
--)
--DECLARE @insert INT
--SET @insert=1
--WHILE(@insert <10)
--BEGIN
-- INSERT INTO dbo.temp_table
-- ( actymd, acthms )
-- VALUES (
-- '', -- actymd - varchar(10)
-- '' -- acthms - varchar(10)
-- )
-- SET @insert+=1;
--END
SELECT * FROM dbo.temp_table
--update dbo.temp_table SET actymd ='' --每次验证执行完成,将数据作还原处理
---验证事务的会滚
SET XACT_ABORT ON ---数据库这里也需要开启否则还是徒劳
DECLARE @count INT
DECLARE @indext INT
SELECT @count=COUNT(*) FROM dbo.temp_table(NOLOCK)
SET @indext =1;
BEGIN TRY
WHILE(@indext<@count)
BEGIN
IF(@indext<4) ---如果事务有效果,那么此处的设置导致temp_table只会被更新3行数据
BEGIN
SELECT 'ddd'
UPDATE temp_table SET actymd='tt' WHERE id =@indext
END
ELSE
BEGIN
BEGIN TRAN --此处进行事务执行结果如图1 --此处对应注释执行结果如图2
UPDATE temp_table SET actymd='tt_yichang' WHERE id =@indext
UPDATE temp_table SET actymd='dddddddddddddddddddddddddddd' WHERE id =@indext --此处会执行错误
COMMIT
END
SET @indext+=1;
END
END TRY
BEGIN CATCH
ROLLBACK
SELECT ERROR_MESSAGE(),ERROR_NUMBER(),@indext
END CATCH
--图1 有事务的执行结果
--id actymd acthms
--1 tt
--2 tt
--3 tt
--4
--5
--6
--7
--8
--9
--图2 没有事务的执行结果
--id actymd acthms
--1 tt
--2 tt
--3 tt
--4 tt_yichang
--5
--6
--7
--8
--9
sql中的常见报错;的更多相关文章
- 内置Jetty配置JSP支持过程中的常见报错
目录 1. 常见报错及解决 1.1 JSP support not configured 1.2 JSTL标签解析 1.3 JSP编译 1.4 JSP实现依赖 1.5 EL表达式支持 2. 小结 1. ...
- C语言开发中常见报错的解决方案
C语言开发中常见报错的解决方案 整理来源于网络,侵权请通知删除.*禁止转载 ---- fatal error C1003: error count exceeds number; stopping c ...
- web报表工具FineReport使用中遇到的常见报错及解决办法(二)
web报表工具FineReport使用中遇到的常见报错及解决办法(二) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘 ...
- java常见报错及解决
Java常见报错信息: Java 常见异常种类 Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定 ...
- HDFS集群常见报错汇总
HDFS集群常见报错汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DataXceiver error processing WRITE_BLOCK operation 报 ...
- 03:git常见报错解决方法
1.1 git常见报错解决方法 1.warning: LF will be replaced by CRLF in .idea/workspace.xml. 参考博客:https://www.cnbl ...
- JavaScript 调试常见报错以及原因
JavaScript 调试常见报错以及原因 测试环境 chrome 版本 66.0.3359.170(正式版本) (64 位) TypeError 类型错误 不是操作符所接受的数据类型. //---- ...
- Django 连接 MySQL 数据库及常见报错解决
目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...
- rsync 守护进程模式搭建 与常见报错
守护进程模式搭建 1.环境准备 2.安装rsync(做备份的服务器都安装) [root@backup ~]# yum install -y rsync 3.服务端配置 [root@backup ~]# ...
随机推荐
- Spark:DataFrame批量导入Hbase的两种方式(HFile、Hive)
Spark处理后的结果数据resultDataFrame可以有多种存储介质,比较常见是存储为文件.关系型数据库,非关系行数据库. 各种方式有各自的特点,对于海量数据而言,如果想要达到实时查询的目的,使 ...
- 《python for data analysis》第八章,绘图与可视化
<利用python进行数据分析>一书的第8章,关于matplotlib库的使用,各小节的代码. # -*- coding:utf-8 -*-import numpy as npimport ...
- CodeForce Div 2 C. Masha and two friends
题目链接: http://codeforces.com/contest/1080/problem/C 思路:双向延长两个矩形方块的4边,会形成一个被分割为9块的更大立方体. 计算所有的9个方框.方框中 ...
- softmax 损失函数求导过程
前言:softmax中的求导包含矩阵与向量的求导关系,记录的目的是为了回顾. 下图为利用softmax对样本进行k分类的问题,其损失函数的表达式为结构风险,第二项是模型结构的正则化项. 首先,每个qu ...
- [踩坑系列]URLEncode 中对 空格的编码有 “+”和“%20”两种
URL中的空格有时候被编码成%20,有时候被编码成加号+,曾经迷糊过一段时间,后来查了下资料才搞明白. 一个URL的基本组成部分包括协议(scheme),域名,端口号,路径和查询字符串(路径参数和锚点 ...
- libvirt启动报错Failed to start Virtualization daemon
libvirt启动报错Failed to start Virtualization daemon 1.启动libvirt的具体报错如下 [root@localhost IOS]# service li ...
- Python 模块源
1.官方:https://pypi.org/ 2.LFD UCI :https://www.lfd.uci.edu/~gohlke/pythonlibs/ 4.清华源:https://pypi.tun ...
- vue 深拷贝
Vue.set(row,'isEdit',true); let newRow = JSON.parse(JSON.stringify(row)); this.totalData.push(newRow ...
- python基础知识16---函数补充
一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- spring boot项目中处理Schedule定时任务
项目中,因为使用了第三方支付(支付宝和微信支付),支付完毕后,第三方支付平台一般会采用异步回调通知的方式,通知商户支付结果,然后商户根据通知内容,变更商户项目支付订单的状态.一般来说,为了防止商户项目 ...