-- 哈哈: select '对一个逻辑运算:10=5+3+2进行解析,如何写存储过程?' from dual;
-- 哈哈:select '很急' from dual;
select 5+3+2 from dual;
SQL> select '5+3+2='||to_char(5+3+2) as results from dual;RESULTS -------- 5+3+2=10
select (5+3+2)||'=5+3+2' from dual;
select '5+3+2='||to_char(5+3+2) from dual;
SQL> create or replace procedure proc_judge_logic_exp(i_str in varchar2, 2 o_result out number) as 3 v_num number; 4 begin 5 execute immediate 'select count(*) from dual where ' || i_str 6 into v_num; 7 if v_num > 0 then 8 o_result := 1; 9 else 10 o_result := 0; 11 end if; 12 end; 13 /
Procedure created
SQL> var v_a number; SQL> exec proc_judge_logic_exp('10=5+3+2',:v_a);
select '对一个逻辑运算:10=5+3+2进行解析,如何写存储过程?' from dual;
SQL> select '5+3+2='||to_char(5+3+2) as results from dual;RESULTS
--------
5+3+2=10
2 o_result out number) as
3 v_num number;
4 begin
5 execute immediate 'select count(*) from dual where ' || i_str
6 into v_num;
7 if v_num > 0 then
8 o_result := 1;
9 else
10 o_result := 0;
11 end if;
12 end;
13 /
Procedure created
SQL> var v_a number;
SQL> exec proc_judge_logic_exp('10=5+3+2',:v_a);
PL/SQL procedure successfully completed
v_a
---------
1
SQL>