【问题标题】:PLSQL STORED PROCEDURE does not give resultPLSQL STORED PROCEDURE 不给出结果
【发布时间】:2018-07-30 18:37:40
【问题描述】:
select count(*) 
INTO countExceed 
from uid_emp_master k 
where k.unique_id in (select k.reviewer_uid 
                      from uid_rm_hierarchy k 
                      where k.unique_id in ('||p_ID_list||')) 
                      and k.band IN( 'A','B','C','D');

if (countExceed > 0) then 
    quer :='UPDATE UID_RM_HIERARCHY I 
            SET I.REVIEWER_UID in (SELECT L.REVIEWER_UID 
                                   FROM UID_RM_HIERARCHY L 
                                   WHERE L.UNIQUE_ID  in ('||p_ID_list||') )  
            WHERE I.REVIEWER_UID in('||p_ID_list||') 
            and isdeleted=0';

EXECUTE IMMEDIATE  quer ;
END IF;

上面的存储过程没有显示任何结果变量countExceed声明为数字请帮助我更正查询。

【问题讨论】:

  • 您还需要为 select 语句运行 EXECUTE IMMEDIATE。我猜 p_id_list 是一个包含此列表的变量,您还需要为此创建一个动态 sql。
  • 你能发一个 p_ID_list 的例子吗?另外,你是如何运行这个的?这是在 PL/SQL 块中,还是您完全按照您发布的方式运行它?
  • ... 而 p_id_list 就像 ... ?它是逗号分隔列表的列表吗?它是否包含引号,...?
  • 逗号分隔列表就像 RAJ118831,08666F

标签: plsql plsqldeveloper


【解决方案1】:

问题出在 where k.unique_id in ('||p_ID_list||'))

这里是说要查找记录

where unique_id = '||p_ID_list||'

与它的类型完全相同,但您需要将该变量作为值列表处理。

假设你有一张这样的桌子

create table tabTest(id) as (
    select 'id1' from dual union all
    select 'id2' from dual union all
    select 'id3' from dual union all
    select 'id4' from dual
)

你的输入字符串是'id1,id3,1d8';

我看到两种方法可以满足您的需求;一种是动态SQL,例如:

declare
    vResult     number;
    vList       varchar2(199) := 'id1,id3,1d8';
    vSQL        varchar2(100);
begin
    vSQL := 
    'select count(*)
    from tabTest
    where id in (''' || replace (vList, ',', ''', ''') || ''')';
    --
    execute immediate vSQL into vResult;
    --
    dbms_output.put_line('Result: ' || vResult);
end;    

另一种方法是将字符串拆分为值列表,然后简单地使用 IN 中的结果列表。

为此,关于如何在 Oracle 中拆分逗号分隔的列表字符串有很多答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 2016-05-13
    • 2020-03-16
    • 2012-08-15
    相关资源
    最近更新 更多