好的,我有一个问题涉及到我以前遇到的问题。我知道如何解决这个问题,但是我们在尝试重现错误时遇到了问题。Sybase选择变量逻辑
我们有一系列基于其他记录创建记录的过程。记录通过link_id
链接到主记录。在这抓住一个link_id
程序,查询
select @p_link_id = id --of the parent
from table
where thingy_id = (blah)
现在,有在表的活动多行。有些可以取消。我拥有的代码并不会在select语句中排除已取消的行,因此如果先前已取消行,那些id将出现在select中。如果我拒绝已取消的行,总会有一个“开放”记录被选中。 (追加where status != 'C'
)
这就解决了这个问题。但是,我需要能够在我们的开发环境中重现此问题。
我已经经历了一个过程,在这个过程中,我输入了一整堆数据,打开,取消等尝试让这个select语句返回一个无效的id。但是,每当我运行select时,id都是按顺序生成的,但是在发生此错误的情况下,select语句返回似乎是第一个值的变量。
例如。
ID Status
1 Cancelled
2 Cancelled
3 Cancelled
4 Open
鉴于上述,如果我做了一个选择我想要的ID,我想得到'4'。在错误中,结果是1.但是,即使我输入了10个已取消的记录,我仍然可以得到最后一个记录。
在oracle中,我知道如果你选择一个变量并返回多个记录,你会得到一个错误(我认为)。 Sybase显然可以将多个值分配给变量而不会出错。
我在想如何从表中选择数据,其中没有排序顺序的ID不按升序顺序返回,或者有一个选择到变量中的dboption保存查询的第一个或最后一个值。
编辑:它看起来像我们可以通过回滚存储过程更改来重现此错误。但是,procs不会靠近这个link_id列。是否有可能对数据库体系结构进行更改可能会破坏索引或其他内容?
请问这是[标签:sybase-asa],[标签:sybase-ase],[标签:sybase-iq]还是[标签:sqlanywhere]?试图清理[sybase]标记... – 2013-03-14 07:31:05