【发布时间】:2021-08-07 18:07:09
【问题描述】:
我写了一个 PLSQL 脚本,它应该检查一个选定的行是否包含 TRUE 如果是 then 他应该给我打印一个文本.. 但他获取的不止一个行。
DECLARE
tmp varchar2(20);
BEGIN
Select Status into tmp
From Cdb_Dv_Status;
IF tmp = 'TRUE' THEN
DBMS_Output.put_line('the output is false');
ELSE
DBMS_Output.put_line('the output is true');
END IF;
end;
/
这是我用 SQL 选择它时得到的结果
NAME STATUS
------------------- -----------
DV_ENABLE_STATUS FALSE
DV_APP_PROTECTION NOT CONFIGURED
DV_CONFIGURE_STATUS FALSE
DV_APP_PROTECTION NOT CONFIGURED
DV_ENABLE_STATUS FALSE
DV_CONFIGURE_STATUS FALSE
DV_APP_PROTECTION NOT CONFIGURED
DV_CONFIGURE_STATUS FALSE
DV_ENABLE_STATUS FALSE
DV_CONFIGURE_STATUS FALSE
DV_APP_PROTECTION NOT CONFIGURED
DV_ENABLE_STATUS FALSE
这也不起作用..他告诉我我必须声明 tmp
BEGIN
for rec in (
select status tmp
from Cdb_Dv_Status
)loop
IF rec.tmp='TRUE' then
dbms_output.put_line('Database Vault wird genutzt');
end if;
end loop;
IF rec.tmp='TRUE' then
dbms_output.put_line('wird genutzt');
ELSE
dbms_output.put_line('Database Vault wird nicht genutzt');
END IF;
end;
/
【问题讨论】:
-
包含还是相等?它有一些不同......
-
你想在 PL/SQL 代码中做什么?在 SQL 查询中,您会得到“true”、“false”或其他值,表中的每一行对应一个值。在该过程中,您似乎想在变量中选择一个值 - 但
SELECT查询将返回很多值,而不是一个值。所以代码不可能是正确的;但如果我们甚至不知道您要解决什么问题,我们也无法帮助您解决问题。 -
他应该检查返回的状态......“假”、“未配置”如果其中之一为真他应该返回“真它已使用”否则“未使用”