Oracle apex 一场计算

Oracle apex 一场计算,oracle-apex,calculator,calculation,Oracle Apex,Calculator,Calculation,我不熟悉sql和pl/sql。为了练习,我做了一个计算器的作业。那部分有效。但他们也希望能够在文本字段中键入计算,然后它就需要工作了。例如4+4(然后是键盘上的=按钮或回车键)或4+6-3= 带按钮的计算器可以工作,但如果在文本字段中键入计算,则无法工作。有人能帮我吗 这是我总数中的代码: declare l_operator varchar2(1) := :P3_OPERATOR; l_value1 number := :P3_VALUE1; l_value2 numb

我不熟悉sql和pl/sql。为了练习,我做了一个计算器的作业。那部分有效。但他们也希望能够在文本字段中键入计算,然后它就需要工作了。例如4+4(然后是键盘上的=按钮或回车键)或4+6-3=

带按钮的计算器可以工作,但如果在文本字段中键入计算,则无法工作。有人能帮我吗

这是我总数中的代码:

declare
    l_operator varchar2(1) := :P3_OPERATOR;
    l_value1 number := :P3_VALUE1;
    l_value2 number := :P3_VALUE2;
    l_result number := nvl(:P3_VALUE1,0);
    begin
    case l_operator
    when '+' then
        l_result := l_value1 + l_value2;
    when '-' then
         l_result := l_value1 - l_value2;
    when '*' then
         l_result := l_value1 * l_value2;
    when '/' then
         l_result := l_value1 / l_value2;
    else
        null;
    end case;
    :P3_OPERATOR := null;
    :P3_VALUE2 := null;
    :P3_VALUE1 := l_result;    
    :P3_NUMBERFIELD := l_result;
    end;
对于+、-、*和\,此为als额外值

   :P12_OPERATOR := '*';
    :P12_NUMBERFIELD := :P12_OPERATOR;
这是我所有号码按钮的代码:

 begin
    if :P12_OPERATOR is null then
    :P12_VALUE1 := :P12_VALUE1 || 4;
    :P12_NUMBERFIELD := :P12_VALUE1;
    elsif :P12_OPERATOR is not null then
    :P12_VALUE2 := :P12_VALUE2 || 4;
    :P12_NUMBERFIELD := :P12_VALUE2;
    end if;
    end; 

这不是使用SQL或PL/SQL(或APEX,看起来您也在使用)的典型方式

您可以使用以下代码计算键入的任何表达式:

begin
   execute immediate 'select ' || :P3_NUMBERFIELD || ' from dual' into l_result;
exception
   when others then
      l_result := 'Invalid input';
end;

例外情况是,如果用户输入的是“hello world”之类的废话,而不是算术表达式,则可以阻止计算器出错。用户需要在不键入等号的情况下键入一个表达式,如
4+4
,然后按一个按钮调用该过程来计算结果。

这不是使用SQL或PL/SQL(或APEX,看起来您也在使用)的典型方式

您可以使用以下代码计算键入的任何表达式:

begin
   execute immediate 'select ' || :P3_NUMBERFIELD || ' from dual' into l_result;
exception
   when others then
      l_result := 'Invalid input';
end;

例外情况是,如果用户输入的是“hello world”之类的废话,而不是算术表达式,则可以阻止计算器出错。用户需要在不键入等号的情况下键入一个表达式,如
4+4
,然后按一个按钮调用该过程来计算结果。

我正要评论你写的内容,但根据他的问题,他可能还应该检查“=”是否是文本中的最后一个字符,如果是,删除它。我正要评论你写的内容,但根据他的问题,他可能还应该检查“=”是否是文本中的最后一个字符,如果是,则删除它。