gpt4 book ai didi

database - 用于循环和记录的 PL/SQL 游标不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 23:05:48 24 4
gpt4 key购买 nike

我有以下问题。我正在尝试检查一个数字 (bsn),它是否在数据库中。如果它不在数据库中,它应该给我一个错误,但是现在我总是得到一个错误,即使数据库中存在该数字。它在数据库中只有一个数字时工作正常,但有更多...这就是问题所在。哦,我正在使用 APEX,所以我将其用作流程。

   create or replace PROCEDURE CONTROLE_BSN IS

CURSOR c_klanten
IS
SELECT bsn
FROM klant;

v_bsn VARCHAR2(10) := V('P7_BSN');

e_geen_bsn EXCEPTION;

BEGIN

FOR r_record IN c_klanten
LOOP
IF r_record.bsn != v_bsn THEN
RAISE e_geen_bsn;
END IF;
END LOOP;

EXCEPTION
WHEN e_geen_bsn THEN
raise_application_error(-20001, 'This bsn-number does not exists.');

END CONTROLE_BSN;

最佳答案

你的逻辑很流畅。一旦您的表中有两个不同的 bsn,您的测试将至少对其中一个为真:

  FOR r_record IN c_klanten
LOOP
IF r_record.bsn != v_bsn THEN --< when N different records,
-- this is true for at least N-1 of them
RAISE e_geen_bsn;
END IF;
END LOOP;

也许你应该选择比这简单一点的东西。为什么不这样写你的光标:

CURSOR c_klanten
IS
SELECT count(*) n
FROM klant
WHERE nbc = v_bsn;

这样,你就很容易得到匹配的bsn的编号。 0、1 或更多。然后执行适当的操作。

关于database - 用于循环和记录的 PL/SQL 游标不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26672370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com