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 dual 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;
希望对你有所帮助。
追问谢谢你费心的解答!