好的,我有一個問題涉及到我以前遇到的問題。我知道如何解決這個問題,但是我們在嘗試重現錯誤時遇到了問題。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