【发布时间】:2015-05-26 13:11:05
【问题描述】:
如何使 Sybase 的数据库引擎以非数字顺序返回未排序的记录列表?
~~~
我有一个问题,我需要在应用程序中重现错误,我从按顺序生成 ID 的表中进行选择,但 ID 不是选择中的最后一个。
让我解释一下。
ID STATUS
_____________
1234 C
1235 C
1236 O
上面是 3 个 ID。我有代码,这些将是
的结果select @p_id = ID from table where (conditions).
但是,没有用于检查 status = 'O' (open) 的子句。记住 Sybase 将最后返回的记录保存到一个变量中。
~~~~~
有人要求我向测试团队提供一些会使结果不起作用的东西。如果 Sybase 在无序列表中选择上述内容,它可能会以升序出现,或者,如果数据库引擎需要更改存储数据块或一些技术魔法的东西,则顺序可能会被打乱。最初的错误是程序返回 1234 而不是 1236。
有没有一种方法可以让我100% 保证 Sybase 将搜索一个数据块并且必须加倍返回,有效地“打破”升序搜索,而不是返回最后一个记录,但还有其他吗? (除了最大值之外的所有记录都会出错,因为它们都是“关闭的”)
我想要某种神奇的 SQL 代码,以确保事情不会以完全数字顺序搜索表。理想情况下,我希望不必更改程序,因为测试团队希望看到完全相同的程序被破坏(就像敲打order by id desc 一样容易会捏造结果)。
【问题讨论】: