当前位置:首页 » 编程语言 » sql处理基本的异常
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql处理基本的异常

发布时间: 2022-05-16 00:58:51

sql server异常怎么处理

你可以看一下异常谢谢,然后根据异常信息进行处理。
你可以在这里贴出一场信息,这样比较容易得到答案。
异常信息一般在操作sql时弹出
在系统日志里面也可以查看

❷ 扫健康码SQL运行异常怎么办

解释如下。
在程序中,有时候完成一些Transact-SQL会出现错误、异常信息。如果我们想自己处理这些异常信息的话,需要手动捕捉这些信息。那么我们可以利用trycatch完成。
TRY?CATCH构造包括两部分:一个TRY块和一个CATCH块。如果在TRY块中所包含Transact-SQL语句中检测到错误条件,控制将被传递到CATCH块(可在此块中处理该错误)。
CATCH块处理该异常错误后,控制将被传递到ENDCATCH语句后面的第一个Transact-SQL语句。如果ENDCATCH语句是存储过程或触发器中的最后一条语句,控制将返回到调用该存储过程或触发器的代码。将不执行TRY块中生成错误的语句后面的Transact-SQL语句。
如果TRY块中没有错误,控制将传递到关联的ENDCATCH语句后紧跟的语句。如果ENDCATCH语句是存储过程或触发器中的最后一条语句,控制将传递到调用该存储过程或触发器的语句。
TRY块以BEGINTRY语句开头,以ENDTRY语句结尾。在BEGINTRY和ENDTRY语句之间可以指定一个或多个Transact-SQL语句。CATCH块必须紧跟TRY块。CATCH块以BEGINCATCH语句开头,以ENDCATCH语句结尾。在Transact-SQL中,每个TRY块仅与一个CATCH块相关联。

❸ 发生sql异常如何处理

大量数据时建议使用存储过程提高效率同时进行错误处理begin try
begin transaction
insert into types values(@typename,@blogman)
insert into bloginfo values(@blogman,@blogtitle,@blogcontent,@@identity,getdate(),0)
commit transaction
return @@identity
end try
begin catch
rollback transaction
return 0
end catch

❹ sql执行出错,该怎么解决

运行数据库出现错误,解决步骤如下:
1、单击“开始”—“所有程序”—“MS SQL Server 2008R2”;
2、选择“Configuration tools”;
3、单击“SQL Server Configuration Manager”,打开;
4、右键单击“SQL Server(你的服务器名字)”,单击“启动”;
5、启动完成后,重新连接数据库即可。

❺ MySQL异常处理浅析

MySQL的异常处理分析如下:
标准格式
DECLARE
handler_type
HANDLER
FOR
condition_value[,...]
statement
handler_type:
CONTINUE
|
EXIT
|
UNDO
--这个暂时不支持
condition_value:
SQLSTATE
[VALUE]
sqlstate_value
|
condition_name
|
SQLWARNING
|
NOT
FOUND
|
SQLEXCEPTION
|
mysql_error_code
condition_value细节
1、常用MYSQL
ERROR
CODE
列表
http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html
更多错误列表见MySQL安装路径下
比如我的/usr/local/mysql/share/mysql/errmsg.txt
说明一下:SQLSTATE
[VALUE]
sqlstate_value这种格式是专门为ANSI
SQL

ODBC以及其他的标准.
并不是所有的MySQL
ERROR
CODE
都映射到SQLSTATE。
2、如果你不想插ERROR
CODE的话,就用速记条件来代替
SQLWARNING
代表所有以01开头的错误代码
NOT
FOUND
代表所有以02开头的错误代码,当然也可以代表一个游标到达数据集的末尾。
SQLEXCEPTION
代表除了SQLWARNING和NOT
FOUND
的所有错误代码
3、我们现在就用手册上的例子
CREATE
TABLE
t
(s1
int,primary
key
(s1));
mysql>
use
t_girl
Database
changed
mysql>
CREATE
TABLE
t
(s1
int,primary
key
(s1));
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
mysql>
mysql>
DELIMITER
||
mysql>
CREATE
PROCEDURE
handlerdemo
()
->
BEGIN
->
DECLARE
EXIT
HANDLER
FOR
SQLSTATE
'23000'
BEGIN
END;
--
遇到重复键值就退出
->
SET
@x
=
1;
->
INSERT
INTO
t
VALUES
(1);
->
SET
@x
=
2;
->
INSERT
INTO
t
VALUES
(1);
->
SET
@x
=
3;
->
END||
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
DELIMITER
;
mysql>
call
handlerdemo();
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
select
@x;
+------+
|
@x
|
+------+
|
2
|
+------+
1
row
in
set
(0.00
sec)
mysql>
call
handlerdemo();
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
select
@x;
+------+
|
@x
|
+------+
|
1
|
+------+
1
row
in
set
(0.00
sec)
mysql>
现在来看一下遇到错误继续的情况
mysql>
truncate
table
t;
Query
OK,
0
rows
affected
(0.01
sec)
mysql>
DELIMITER
$$
mysql>
DROP
PROCEDURE
IF
EXISTS
`t_girl`.`handlerdemo`$$
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
CREATE
DEFINER=`root`@`localhost`
PROCEDURE
`handlerdemo`()
->
BEGIN
->
DECLARE
CONTINUE
HANDLER
FOR
SQLSTATE
'23000'
BEGIN
END;
->
SET
@x
=
1;
->
INSERT
INTO
t
VALUES
(1);
->
SET
@x
=
2;
->
INSERT
INTO
t
VALUES
(1);
->
SET
@x
=
3;
->
END$$
Query
OK,
0
rows
affected
(0.01
sec)
mysql>
DELIMITER
;
mysql>
call
handlerdemo();
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
select
@x;
+------+
|
@x
|
+------+
|
3
|
+------+
1
row
in
set
(0.00
sec)
mysql>
call
handlerdemo();
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
select
@x;
+------+
|
@x
|
+------+
|
3
|
+------+
1
row
in
set
(0.00
sec)
mysql>
可以看到,始终执行到最后。
当然,上面的SQLSTATE
'23000'可以替换为1062
我们来看一下警告。
mysql>
alter
table
t
add
s2
int
not
null;
Query
OK,
0
rows
affected
(0.01
sec)
Records:
0
Duplicates:
0
Warnings:
0
此列没有默认值,插入的时候会出现警告或者1364错误提示。
mysql>
DELIMITER
$$
mysql>
DROP
PROCEDURE
IF
EXISTS
`t_girl`.`handlerdemo`$$
Query
OK,
0
rows
affected,
1
warning
(0.00
sec)
mysql>
CREATE
DEFINER=`root`@`localhost`
PROCEDURE
`handlerdemo`()
->
BEGIN
->
DECLARE
CONTINUE
HANDLER
FOR
1062
BEGIN
END;
->
DECLARE
CONTINUE
HANDLER
FOR
SQLWARNING
->
BEGIN
->
update
t
set
s2
=
2;
->
END;
->
DECLARE
CONTINUE
HANDLER
FOR
1364
->
BEGIN
->
INSERT
INTO
t(s1,s2)
VALUES
(1,3);
->
END;
->
SET
@x
=
1;
->
INSERT
INTO
t(s1)
VALUES
(1);
->
SET
@x
=
2;
->
INSERT
INTO
t(s1)
VALUES
(1);
->
SET
@x
=
3;
->
END$$
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
DELIMITER
;
mysql>
call
handlerdemo();
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
select
*
from
t;
+----+----+
|
s1
|
s2
|
+----+----+
|
1
|
3
|
+----+----+
1
row
in
set
(0.00
sec)
遇到错误的时候插入的新记录。
mysql>
select
@x;
+------+
|
@x
|
+------+
|
3
|
+------+
1
row
in
set
(0.00
sec)

❻ 执行transact-sql 语句或批处理时发生异常。

执行transact-sql 语句或批处理时发生异常是设置错误造成的,解决方法为:

1、打开HeidiSQL,选择要操作的服务器连接,然后点击【打开】。

❼ 如何在SQL存储过程中处理错误

1. 建立一个过程,第一个语句 DECLARE EXIT HANDLER是用来处理异常的,意思是如果错误 1216发生,这个程序将会在错误记录表中插入一行,
EXIT的意思是 当动作成功提交后推出这个复合语句。
create procere p22(parameter int)
begin
declare exit Handler for 1452
insert into error_log values(concat('Time: ',current_date,'.Foreign key reference failure for value=',parameter));
insert into t3 values(parameter);
end;//
2. 申明异常处理的语法 DECLARE HANDLER syntax:
DECLARE {EXIT|CONTINUE} HANDLER FOR {error_number|{SQLSTATE error-string}|condition} SQL Statement
上面就是错误处理的用法,也就是一段当程序出错后自动触发的代码,MYSQL允许两种处理器,一种是exit处理,另外一种是 continue处理,与exit
不同的是在于他执行后,原主程序仍然继续运行,那么该复合语句就没有出口了。
----continue处理的例子:
create table t4(s1 int primary key);//
create procere p23()
begin
declare continue handler for SQLSTATE '23000' set @x2=1;
set @x=1;
insert into t4 values (1);
set @x=2;
insert into t4 values(1);
set @x=3;
select @x, @x2;
end;//
call p23();//
---- rollback(回滚事务),定义自己的错误处理名字 declare '错误处理名' condition for SQLSTATE'23000';
create procere p24()
begin
declare ViolationSelf condition for SQLSTATE'23000';
DECLARE EXIT HANDLER for ViolationSelf rollback;
start transaction;
insert into t2 values(1);
insert into t2 values(1);
commit;
end;//

/******************************************** Cursor游标 **********************************************************/
游标实现功能的摘要: 声明游标, 打开游标,从游标里读取,关闭游标
DECLARE cursor-name CURSOR FOR SELECT ······
OPEN cursor-name;
FETCH cursor-name INTO variable;
CLOSE cursor-name;
1. create procere p25(out return_val int)
begin
DECLARE a,b,c int;
DECLARE cur_1 CURSOR for select s1 from t;
DECLARE continue handler for not found set b=1;
open cur_1;
set c=0;
repeat
fetch cur_1 into a;
until b=1
end repeat;
close cur_1;
set return_val=a;
end;//
2. create procere p25_1(out return_val int)
begin
DECLARE a,b,c int;
DECLARE cur_1 CURSOR for select s1 from t;
DECLARE continue handler for not found set b=1;
open cur_1;
set c=0;
lable_1:loop
fetch cur_1 into a;
if b=1 then
leave lable_1;
end if;
set c=c+1;
end loop;
close cur_1;
set return_val=c;
end;//
create procere p34(in va int)
begin
delete from t where s1=va;
end;//

❽ 在运行SQL时出现错误,请问如何解决

运行数据库出现错误,解决步骤如下:

1、单击“开始”—“所有程序”—“MS SQL Server 2008R2”;

2、选择“Configuration tools”;

3、单击“SQL Server Configuration Manager”,打开;

❾ 执行SQL语句或批处理发生异常怎么解决【图】

没看到你的图,不过一般的原因是
日志文件
不存在,你可以手工建立一个同名的日志文件。

❿ sql server 2008数据库提示异常如何处理

如果说还可以创建数据库。只是某个数据库出现可疑,那就是我说的那两个文件被删或者移除追问:
一直在运行的啊!好好的
没删除啊!我用过很多办法都不行啊
我脱离
然后再附加
曾经遇到这样的问题!我试过把mdf拿去其他机,然后成功!我就备份bak回来原来新建
还原
都很顺利!这次就是不行。回答:
是整个服务器质疑还是只是一个数据库?还能建库吗?既然祢有备份那就附加,如果附加不了估计就是服务器问题。建议把sql重新装下。估计就好了
有9个数据库
,各种程序都有!同样的程序的数据库有三个,有两个出问题!
之前出问题的也是同一种程序新装sql的话,我全部停止几个小时,肯定有损失的
而且麻烦!
我不能次次遇见这样的问题就新装sql吧!
我总要找个解决的办法的啊
哪怕出现“可疑”后能够备份bak数据库也好!
我也经常用数据库,也出现过质疑,基本就是我说的那两种情况,我仔细想了下,既然是质疑,我想肯定那两个备份文件服务器默认找不到的缘故,只能是被移除或者更名但是祢又说备份在呢还可以附加。而且祢又有那么多库。不能停!祢给我截个图吧。