2017-05-30 56 views
0

值在PL SQL過程我有一個變量(聲明爲NUMBER)如下,PL-SQL刪除變量

Store_Values 

我加載一些數據,如果這個變量的選擇query.So這個數據匹配的值(將在if語句中與變量進行比較的值),然後如何從變量中刪除匹配的值。下面 是過程:

CREATE OR REPLACE PROCEDURE UPDATE_SIG_NAME_MAPS(SignatureID NUMBER, RuleCateory VARCHAR2, SignatureMessage VARCHAR2, IsDelete NUMBER, IsNew NUMBER) AS 
NumberOfValues  NUMBER ; 
BEGIN 
select VALUE BULK COLLECT into NumberOfValues from list_details where LIST_CONFIG_ID in(fetching from other table's); 
if NumberOfValues = SignatureID then 
**delete from sometable with where clause** 
end if; 
insert variable remaining values to the table using for loop 
END ; 
/
+1

comaprision結束後,將變量值重置爲NULL – XING

+1

此變量的類型是什麼?請發佈相關部分代碼以更好地描述您的需求 – Aleksej

+0

不,我不能這樣做,因爲我必須將剩餘的變量值插入表中@XING – mayur

回答

1

正如@Aleksej說,你想使用批量收集,所以你需要如下聲明你的varible獲取到一個標量:

您可以按照指示相應地修改你的代碼。

CREATE OR REPLACE PROCEDURE UPDATE_SIG_NAME_MAPS (
    SignatureID   NUMBER, 
    RuleCateory   VARCHAR2, 
    SignatureMessage VARCHAR2, 
    IsDelete   NUMBER, 
    IsNew    NUMBER) 
AS 
    Type NumberOfValue is table of NUMBER; 
    NumberOfValues NumberOfValue; 
BEGIN 
    SELECT VALUE 
    BULK COLLECT INTO NumberOfValues 
    FROM list_details 
    WHERE LIST_CONFIG_ID IN (fetching from other table's); 

    For rec in 1..NumberOfValues.count 
    loop 
     if NumberOfValues(rec) = SignatureID then 
     **delete from sometable with where clause** 

     insert variable remaining values to the table 
    end loop; 

END ;