Oracle PL-SQL从变量中删除值
在PL SQL过程中,我有一个变量(声明为NUMBER),如下所示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
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. 不太清楚你在寻找或试图实现什么。请详细说明您的实际需求和预期输出。此代码无法工作。您正在使用
批量收集
获取标量变量,该变量用于获取值列表。