在sql server 2005里面的 单引号引起问题。

LIU312591 2011-06-20 02:50:37
sql server 2005里面的单引号引起的问题,代码如下,
代码1:
BEGIN TRY
BEGIN TRAN
SELECT 1
UPDATE AS_SKMS SET SKMSCode = 34252345 where SKMSCode = 23412341234
delete asdfa --没有这个表,此处报错
SELECT 2
COMMIT TRAN
END TRY
BEGIN CATCH
SELECT 3
ROLLBACK TRAN
SELECT 4
END CATCH
代码2:
BEGIN TRY
BEGIN TRAN
SELECT 1
UPDATE AS_SKMS SET SKMSCode = '1' where SKMSCode = '1234'
delete asdfa
SELECT 2
COMMIT TRAN
END TRY
BEGIN CATCH
SELECT 3
ROLLBACK TRAN
SELECT 4
END CATCH

代码一输出:1,3,4
代码二输出:1,同时消息:对象名 'asdfa' 无效。

两者的代码不同之处只有 两处单引号引起的变量,但是在sql2005执行时就完全不一样。第一个是正常的执行了catch代码,
而第二个则是报错了,也就是catch没有完成错误的捕捉。


请问为什么会这样呢?单引号……
实在没分了。
...全文
140 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LIU312591 2011-06-20
  • 打赏
  • 举报
回复
我发现错误了:
参考;ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/248df62a-7334-4bca-8262-235a28f4b07f.htm
-晴天 2011-06-20
  • 打赏
  • 举报
回复
一般不用catch,可以采用
if exists(select 1 from sysobjects where name='表' and type='U')
来作为查询条件.
LIU312591 2011-06-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sql77 的回复:]

UPDATE AS_SKMS SET SKMSCode = 34252345 where SKMSCode = 23412341234

这个列是否不是数值型。。。。
[/Quote]
这个确实不对了,它的类型转换失败,不能将SKMSCode转成int。
这样的话,表找不到这个错误不能catch么??
SQL77 2011-06-20
  • 打赏
  • 举报
回复
UPDATE AS_SKMS SET SKMSCode = 34252345 where SKMSCode = 23412341234

这个列是否不是数值型。。。。
-晴天 2011-06-20
  • 打赏
  • 举报
回复
下面一段不报错是因为你连着执行了.
BEGIN TRY
BEGIN TRAN
SELECT 1
UPDATE AS_SKMS SET SKMSCode = 34252345 where SKMSCode = 23412341234
delete asdfa --没有这个表,此处报错
SELECT 2
COMMIT TRAN
END TRY
BEGIN CATCH
SELECT 3
ROLLBACK TRAN
SELECT 4
END CATCH
/*

-----------
1

(1 行受影响)

消息 208,级别 16,状态 1,第 4 行
对象名 'AS_SKMS' 无效。
*/
go
BEGIN TRY
BEGIN TRAN
SELECT 1
UPDATE AS_SKMS SET SKMSCode = '1' where SKMSCode = '1234'
delete asdfa
SELECT 2
COMMIT TRAN
END TRY
BEGIN CATCH
SELECT 3
ROLLBACK TRAN
SELECT 4
END CATCH
/*
-----------
1

(1 行受影响)

消息 208,级别 16,状态 1,第 4 行
对象名 'AS_SKMS' 无效。
*/
go
gw6328 2011-06-20
  • 打赏
  • 举报
回复
没有表这种错不是由catch来捕捉的。
第一个是其它错误,所以捕捉到了。
-晴天 2011-06-20
  • 打赏
  • 举报
回复
不是吧...

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧