Select Sybase选择变量逻辑

Select Sybase选择变量逻辑,select,variables,sybase,Select,Variables,Sybase,好的,我有一个问题与我以前遇到的一个问题有关。我知道如何修复它,但我们在尝试重现错误时遇到了问题 我们有一系列基于其他记录创建记录的过程。记录通过链接id链接到主记录。在获取此链接id的过程中,查询是 select @p_link_id = id --of the parent from table where thingy_id = (blah) 现在,表中有多行用于该活动。有些可以取消。我的代码没有在select语句中取消包含已取消的行,因此如果以前有取消的行,那么这些ID将显示在sel

好的,我有一个问题与我以前遇到的一个问题有关。我知道如何修复它,但我们在尝试重现错误时遇到了问题

我们有一系列基于其他记录创建记录的过程。记录通过链接id链接到主记录。在获取此链接id的过程中,查询是

select @p_link_id = id --of the parent
from  table
where thingy_id = (blah)
现在,表中有多行用于该活动。有些可以取消。我的代码没有在select语句中取消包含已取消的行,因此如果以前有取消的行,那么这些ID将显示在select语句中。如果我取消包含取消的行,则始终会选择一条“打开”记录。在何处添加状态!='C'

这就解决了这个问题。然而,我需要能够在我们的开发环境中重现这个问题

我经历了一个过程,在这个过程中,我输入了一整堆数据,打开、取消等等,试图让这个select语句返回一个无效的id。但是,每当我运行select时,id都是按顺序生成的,但是在发生此错误的情况下,select语句返回的似乎是变量中的第一个值

比如说

ID   Status
1    Cancelled
2    Cancelled
3    Cancelled
4    Open
鉴于上述情况,如果我对我想要的ID进行选择,我希望得到“4”。在错误中,结果为1。但是,即使我输入了10条取消的记录,我仍然会得到select中的最后一条记录

在oracle中,我知道如果您选择一个变量并返回多个记录,我想您会得到一个错误。Sybase显然可以将多个值赋给一个变量而不会出错

我认为要么与如何从表中选择数据有关,没有排序顺序的id不会按升序返回,要么与dboption有关,在dboption中,select into变量将保存查询的第一个或最后一个值


编辑:看起来我们可以通过回滚存储过程更改来重现此错误。但是,程序不会靠近此链接id列。对数据库体系结构的更改是否可能会破坏索引或其他内容?

如果返回了多行,则存储的值将是列表中的最后一个值

如果尚未通过order BY指定要检索的订单,则返回的订单将由数据库引擎提供。它可能因数据库实例而异。它可能是按照创建的顺序创建的,甚至可能是随机的,因为数据放置在数据库块结构中的位置

故事的寓意是:

始终使单例选择返回一行 当1无法完成时,请使用“订购人”,以确保您关心的那一个排在最后 这是,还是?正在尝试清理[sybase]标记。。。