2015-09-01 90 views
0

我試過了解Sybase,但我得到的信息對我來說太不明瞭。我遇到的問題是我必須在Sybase中編輯這6000行存儲過程。不用說這是一個完整的噩夢,特別是對於最強點的人並不完全是SQL。如何在Sybase存儲過程中設置和返回變量

在程序的頂部有(只是用更短的變量名對這個問題的緣故)聲明的變量:

DECLARE @MY_VARIABLE INT 

小SQL我熟悉的是SQL Server和Sybase是感覺有點不同。你究竟如何爲該變量設置一個值?在SQL Server中,我想它會是這樣的:

SET @MY_VARIABLE = 1 

但是我找不到在這種情況發生的過程中的任何地方。我確實找到了這個:

SELECT @MY_VARIABLE = convert(integer, Member_Number) 
FROM ELECTRONIC_FORM NOHOLDLOCK 

這是你如何在Sybase中設置變量?用

SELECT @MY_VARIABLE = 2 

例如?

除此之外,如何在程序結束時返回變量的值?我會想象它是這樣的:

SELECT @MY_VARIABLE 

而只是確保它是過程中的最後一件事,但似乎並不奏效。它看起來非常相似,我有一種感覺變量實際上獲得設置而不是選擇。我只是非常困惑,並失去了這裏,先謝謝你的幫助!

回答

1
CREATE PROCEDURE RETURN_SELECT 
AS BEGIN 

    DECLARE @MY_VARIABLE int 
    SELECT @MY_VARIABLE = 2 
    SELECT @MY_VARIABLE 
END 


EXEC RETURN_SELECT 

輸出應該是這樣的:

@MY_VARIABLE 
2 

至於因爲它得到簡單的,不知道是否有幫助,或者你想要更多的東西?

+0

這就是我想要的感謝。使用關鍵字'SELECT'到SET和 - surprise - 選擇它是非常令人困惑的。 – Tiwaz89

+1

您也可以使用SET進行變量賦值。這是最好的解釋: http://stackoverflow.com/questions/3945361/set-versus-select-when-assigning-variables – theweeknd

1

確保你清楚你是否要選擇的變量返回給客戶端的結果集,或者你是否會做與輸出參數變量,更好地這theweeknd的回答將是:

CREATE PROCEDURE RETURN_SELECT 
    @MY_VARIABLE int OUTPUT 
AS BEGIN 

    SELECT @MY_VARIABLE = 2 
END 

這可能會增加混亂,我希望不會。我不知道你是如何得到結果的,但它可能很重要 - 一種方法可能比另一種方法更容易和更好。

這是從上面的SET/SELECT討論中的一個單獨問題。同樣,當您將結果集選擇回客戶端時,您可以在SP中的任何位置執行此操作,甚至可以選擇多個結果集!

相關問題