问题:你的块应该读入两个真实的,并判断这两个数字的乘积是否等于或大于100。使用dbms_output.put_line在屏幕上显示输出。(在需要的地方使用decode而不是IF语句)。数据必须由用户输入。
我在oracle plsql上尝试了这个,并在这里卡住了。
验证码:
CREATE OR REPLACE PROCEDURE two
AS
i number;
j number;
p number;
b boolean;
msg varchar2(100);
BEGIN
i:=&x;
j:=&y;
p:=i*j;
b:=p>=100;
select DECODE(b,1,'True','False') into msg from dual;
dbms_output.put_line(msg);
END;
错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
13/16 PLS-00382: expression is of wrong type
3条答案
按热度按时间gg58donl1#
如果我没说错的话,你不能像那样使用布尔值。但是如果你能把它转换成一个算术运算,得到一个整数值,你就得到了你想要的。所以试着从p中减去100,然后检查它是否是一个正数。如果它是一个正数,p就大于100。
e5nqia272#
不能在过程中使用替换变量(因为它们将在过程编译时计算,而不是在过程运行时计算)。您需要为过程使用参数:
然后,当你调用这个过程时,你可以使用替换变量:
fiddle
eni9jsuy3#
你不能这样做:
布尔值不是SQL数据类型的一部分。它是一种仅限PL/SQL的数据类型,所以你不能在SELECT语句中使用它。另外,你是在将布尔值与整数进行比较,尽管这在Javascript中有效,但在SQL中却不行。
你必须这样做:
或者不要使用布尔值。