2012-12-01 65 views
0

我無法在oracle程序中創建select語句。請幫我創建這個。 現在我在一個過程中創建insert,update.delete語句,但我無法創建select語句。請幫助我使用光標創建select語句。在oracle程序中選擇語句

c_dbuser OUT SYS_REFCURSOR 

ELSIF (TYPE_ =1) THEN 

    OPEN c_dbuser FOR 
    SELECT * FROM tbl_discount_master ; 
    CLOSE c_dbuser; 

END IF; 

call procedure_name(xx,xx,xx,1); 

我怎樣才能得到使用調用過程語句選定的值。

回答

0

select和insert/update/delete的不同之處在於,您需要選擇某個結構,一個或多個變量或一個rowtype變量。

儘可能避免顯式遊標,以支持更快,更簡潔和不易出錯的隱式遊標。 例如。

for cur_my_query in 
    select column1, 
     column2, 
     ... 
    from ... 
    where ... 
loop 
    refer here to cur_my_query or my_query.column1 etc 
end loop 
1

除了其他的建議,你有這個解決方案,當你得到剛好一行。如果沒有選擇的行(NO_DATA_FOUND

DECLARE 
    myvar1 mytable.mycolumn1%TYPE; 
    myvar2 mytable.mycolumn2%TYPE; 
BEGIN 
    SELECT mycolumn1, mycolumn2 
     INTO myvar1, myvar2 
     FROM mytable 
    WHERE …; 
END; 

這將拋出異常,或者如果存在多於一個行(TOO_MANY_ROWS)。