sybase @@error 捕获错误的替代方法

2024-04-18

通常我会遇到这样的错误

EXECUTE (@STATEMENT)

SELECT @ERR_CODE = @@ERROR

它处理简单的错误,如下面的查询.. @@ERROR 返回值

 insert into tab1 values(1) -- error attempt to insert unique constraint

但是下面的查询也给出了唯一约束错误,但是@ERROR没有捕获它它返回空值

insert into tab1 select id from tab2 

所以上面的语句给出了唯一的约束,但 @ERROR 没有捕获它

另一个例子我有以下错误

sybase could not acquire a lock within the specified wait period

@ERROR 也没有捕获

我的问题是有没有一种方法可以捕获执行语句时的任何错误?


您绝对确定在插入约束失败和查看 @@error 之间没有任何语句吗?任何事情都会重置@@error。

事实上,您在 EXECUTE() 中使用动态 SQL - @@error 仍然可用。

尝试像我一样做下面的事情 - 你有什么不同吗?

create table tempdb..abe(a int)
select 1 a into #a

insert #a values (1)

create unique index x on tempdb..abe(a)
insert tempdb..abe select * from #a
Msg 2601, Level 14, State 2:
Server 'CRENG_QA', Line 1:
Attempt to insert duplicate key row in object 'abe' with unique index 'x'
Command has been aborted.
(0 rows affected)
select @@error

 -----------
        2601

execute('insert tempdb..abe select * from #a')
Msg 2601, Level 14, State 2:
Server 'CRENG_QA', Line 1:
Attempt to insert duplicate key row in object 'abe' with unique index 'x'
Command has been aborted.
(0 rows affected)
select @@error

 -----------
        2601
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sybase @@error 捕获错误的替代方法 的相关文章

随机推荐

  • 将限制限定指针传递给函数?

    限制限定指针向我解释为有一个规则 任何由指针访问并在任何地方修改的对象只能由指针访问 那么下面的方法是行不通的 对吧 void agSum int restrict x int n for int i 0 i
  • 如何设置 pexpect ssh 会话的列宽?

    我正在编写一个简单的 python 脚本来通过 SSH 连接到 SAN 运行一组命令 最终 每个命令将与时间戳一起记录到单独的日志中 然后退出 这是因为我们连接的设备不支持证书 ssh 连接 并且当前固件版本没有良好的日志记录功能 我似乎遇
  • SAS Do 循环:在循环内使用循环变量来创建滞后变量

    我想创建包含给定变量的滞后值的变量 以实现大量滞后 我怎么能这样做呢 我尝试以下操作 data out set in do i 1 to 50 let j i lag j Lag j x end run 如何获取循环变量i进入宏变量j或者如
  • 在 Python 中使用多处理创建超时函数

    我正在尝试使用多处理库在 Python 2 7 11 在 Windows 上 中创建超时函数 我的基本目标是 如果函数超时 则返回一个值 如果函数未超时 则返回实际值 我的方法如下 from multiprocessing import P
  • 当结果少于scrollSize设置时,Scroll SearchResponse不可迭代

    我有一个这样的循环 while true scrollResp client prepareSearchScroll scrollResp getScrollId setScroll new TimeValue 600000 execute
  • 从 CREATE TABLE SQL 生成图形模式表示

    我有一个包含许多 CREATE TABLE 语句的 sql 文件 没有参考规范 MyISAM 的东西 但我喜欢创建不同的表框 然后手动组成表关系 我正在使用Mac 有免费的程序可以做到这一点吗 是的MySQL工作台 http dev mys
  • 关于堆栈分配,Go 中什么被视为“小”对象?

    代码 func MaxSmallSize a make int64 8191 b make int64 8192 a b 然后运行go build gcflags m 2 gt 1检查内存分配详细信息 结果 mem go 10 can in
  • 处理 read_html 对空网页的错误响应

    尝试抓取网页标题 但在名为 tweg com 的网站上遇到问题 library httr library rvest page url lt tweg com page get lt GET page url from httr pg lt
  • 即使在模拟器上,“adb root”命令也会返回“adbd 无法在生产版本中以 root 身份运行”?

    我正在尝试运行adb root模拟器上的命令 这是我连接的唯一设备 adb devices List of devices attached emulator 5554 device 但是 我收到以下错误消息 adb root adbd c
  • 如何将 Objective C 静态库导入到 Swift Framework 中?

    我正在编写一个动态框架 Proto framework 对于 Swift 中的 OS X 我想包含静态库中的代码 libstat a 这是用 Objective C 编写的 这是我得到的 Dynamic swift in Proto fra
  • Django,访问 PostgreSQL 序列

    在 Django 应用程序中 我需要创建一个订单号 如下所示 yyyymmddnnnn 其中 yyyy 年 mm 月 dd 日 nnnn 是 1 到 9999 之间的数字 我想我可以使用 PostgreSQL 序列 因为生成的数字是原子的
  • 如何取消订阅 C# 中特定类的事件的所有处理程序?

    基本前提 我有一个房间 当头像 进入 房间内的所有头像时 它会发布一个事件 当头像离开房间时 我希望它删除该房间的所有订阅 在将头像添加到新房间并订阅新房间的活动之前 如何才能最好地从房间中的所有活动中取消头像 代码是这样的 class R
  • 什么时候关闭光栅化步骤才有意义?

    在 vulkan 中 有一个创建管道所需的结构 名为VkPipelineRasterizationStateCreateInfo 在这个结构体中有一个名为rasterizerDiscardEnable 如果该成员设置为VK TRUE那么在光
  • 如何在 IE 的新选项卡中显示 PDF 而不下载它

    看来 IE 不允许直接打开 blob 您必须使用 msSaveOrOpenBlob 但有什么办法可以以某种方式将其转换吗 我确实需要将 PDF 显示到 IE 的新选项卡中而不下载它 或者至少用户不应该进行交互并且看不到它被下载到例如系统临时
  • 子集和问题

    最近我对子集和问题感兴趣 即在超集中找到零和子集 我在SO上找到了一些解决方案 此外 我还遇到了一个特定的问题solution http www skorks com 2011 02 algorithms a dropbox challen
  • 在多个子文件夹中搜索文件的VBA宏

    我有宏 如果我放入文件的单元格 E1 名称 则通过 C Users Marek Desktop Makro 目录进行宏搜索 找到它并将所需的值放入带有宏的原始文件的特定单元格中 是否可以在没有特定文件夹位置的情况下完成这项工作 我需要一些可
  • GCC ARM 汇编预处理器宏

    我正在尝试使用汇编 ARM 宏进行定点乘法 define MULT a b asm volatile SMULL r2 r3 0 1 n t ADD r2 r2 0x8000 n t ADC r3 r3 0 n t MOV 0 r2 ASR
  • 将集合从后台工作者 DoWork 传递到后台工作者已完成并执行 foreach

    我的目标是 用户在组合框中键入完整或部分计算机名 按钮单击事件启动后台工作人员将计算机名传递给 DoWork 方法 DoWork 方法在 ActiveDirectory 中搜索计算机名并将集合传递给 WorkerCompleted 方法 W
  • 动态IP地址的用户可以被阻止吗?

    现在我正在尝试构建一些东西 我的客户想要阻止某些向 Web 服务发出许多请求的 IP 地址 现在我想知道的是 如果我用动态 IP 地址阻止用户 他不能重置调制解调器并重新开始吗 你是对的 如果IP是动态的 尽管路由器重置可能不会立即改变它
  • sybase @@error 捕获错误的替代方法

    通常我会遇到这样的错误 EXECUTE STATEMENT SELECT ERR CODE ERROR 它处理简单的错误 如下面的查询 ERROR 返回值 insert into tab1 values 1 error attempt to