如何使 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 代码,以确保事情不会以完全数字顺序搜索表。理想情况下,我希望不必更改程序,因为测试团队希望看到完全相同的程序被破坏(就像敲击 aorder by id desc
会捏造结果一样简单)。