Oracle apex 一场计算
我不熟悉sql和pl/sql。为了练习,我做了一个计算器的作业。那部分有效。但他们也希望能够在文本字段中键入计算,然后它就需要工作了。例如4+4(然后是键盘上的=按钮或回车键)或4+6-3= 带按钮的计算器可以工作,但如果在文本字段中键入计算,则无法工作。有人能帮我吗 这是我总数中的代码: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
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
,然后按一个按钮调用该过程来计算结果。我正要评论你写的内容,但根据他的问题,他可能还应该检查“=”是否是文本中的最后一个字符,如果是,删除它。我正要评论你写的内容,但根据他的问题,他可能还应该检查“=”是否是文本中的最后一个字符,如果是,则删除它。