oracle 判断条件问题
发布网友
发布时间:2022-02-28 18:08
我来回答
共3个回答
热心网友
时间:2022-02-28 19:37
declare
v_tiaojian varchar2(100);
begin
v_tiaojian :='1240<1400 and 1240>1000';
if v_tiaojian is not null then
dbms_output.put_line('成功');
end if;
end;
类似这样
if判断的是true或者false
---------补充----------
貌似这样也行
declare
V_Tiaojian Varchar2(100);
b boolean;
Begin
V_Tiaojian :='1240<1400';
execute immediate ('select count(*) from al where '||v_Tiaojian) into b;
if b then
dbms_output.put_line('成功');
End If;
end;
热心网友
时间:2022-02-28 20:55
1、创建函数CheckCondition
create or replace function CheckCondition(vCondition in varchar2) return Integer is
iCurID Integer;
iResult Integer;
vSql varchar2(2000);
iC Integer;
begin
if vCondition is null then
Return 1; -- 条件成立
end if;
vSql := 'select Count(1) as C from al where ' || vCondition;
iCurID:= Dbms_Sql.Open_Cursor;
Dbms_Sql.Parse(iCurID, vSql, Dbms_Sql.V7);
Dbms_Sql.Define_Column(iCurID, 1, iC);
iResult:= Dbms_Sql.Execute(iCurID);
if Dbms_Sql.Fetch_Rows(iCurID) > 0 then
Dbms_Sql.Column_Value(iCurID, 1, iC);
else
ic:= -1;
end if;
Dbms_Sql.Close_Cursor(iCurID);
Return iC;
exception
when others then
dbms_output.put_line(sqlerrm);
Return -2;
end;
/
2、改写你的代码
v_tiaojian varchar2(20);
v_tiaojian :='1240<1400 and 1240>1000';
i_CheckCond Integer;
i_CheckCond:= CheckCondition(v_tiaojian);
if i_CheckCond = 1 then -- 条件成立
...
else if i_CheckCond = 0 then -- 条件不成立
...
else -- 条件语句有问题
...
end if;
希望对你有所帮助。
追问谢谢你费心的解答!
热心网友
时间:2022-02-28 22:30
IF要判断的表达式或变量应该是个逻辑值 ,你现在给他的是个字符,你应该把变量v_tiaojian声明成boolean,
v_tiaojian Boolean ;
v_tiaojian := 1240<1400 and 1240>1000;
if (v_tiaojian) then
...
这样应该就可以了