Oracle PL-SQL从变量中删除值

Oracle PL-SQL从变量中删除值,oracle,plsql,Oracle,Plsql,在PL SQL过程中,我有一个变量(声明为NUMBER),如下所示 Store_Values 我正在通过select查询将一些数据加载到此变量中。因此,如果此数据与值匹配(某些值将在if语句中与变量进行比较),那么如何从变量中删除匹配的值。 以下是程序: CREATE OR REPLACE PROCEDURE UPDATE_SIG_NAME_MAPS(SignatureID NUMBER, RuleCateory VARCHAR2, SignatureMessage VARCHAR2, IsD

在PL SQL过程中,我有一个变量(声明为NUMBER),如下所示

Store_Values
我正在通过select查询将一些数据加载到此变量中。因此,如果此数据与值匹配(某些值将在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 ;
/

正如@Aleksej所说,您正试图使用批量收集获取标量变量,因此您需要声明变量,如下所示:

您可以按照说明相应地修改代码

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 ;

一旦COMAPRION超过,将变量的值重置为NULL此变量的类型是什么?请发布一段相关的代码来更好地描述您的需求不,我不能这样做,因为我必须将变量的剩余值插入表中@XING@mayur. 不太清楚你在寻找或试图实现什么。请详细说明您的实际需求和预期输出。此代码无法工作。您正在使用
批量收集
获取标量变量,该变量用于获取值列表。