PL/SQL运算符优先级运算符优先级确定表达式分组。这会影响一个表达式是如何进行计算。某些运算符的优先级高于其他运算符; 例如,乘法运算符的优先级比加法运算高: 例如 x =7 + 3* 2; 这里,x被赋值13,而不是20,因为运算符*具有优先级高于+,所以它首先被乘以3 * 2,然后再加上7。 这里,具有最高优先级的操作出现在表的顶部,那些具有最低出现在底部。在表达式,更高的优先级运算符将首先计算。 运算符 | 操作符 | ** | 指数运算 | +, - | 加法,取反 | *, / | 乘法,除法 | +, -, || | 加,减,并置 | =, <, >, <=, >=, <>, !=, ~=, ^=,
IS NULL, LIKE, BETWEEN, IN | 比较 | NOT | 逻辑否定 | AND | 关联 | OR | 包含 | 示例:试试下面的例子来理解运算符优先级在PL/ SQL中的使用:
DECLARE a number(2) := 20; b number(2) := 10; c number(2) := 15; d number(2) := 5; e number(2) ;BEGIN e := (a + b) * c / d; -- ( 30 * 15 ) / 5 dbms_output.put_line('Value of (a + b) * c / d is : '|| e ); e := ((a + b) * c) / d; -- (30 * 15 ) / 5 dbms_output.put_line('Value of ((a + b) * c) / d is : ' || e ); e := (a + b) * (c / d); -- (30) * (15/5) dbms_output.put_line('Value of (a + b) * (c / d) is : '|| e ); e := a + (b * c) / d; -- 20 + (150/5) dbms_output.put_line('Value of a + (b * c) / d is : ' || e );END;/当上述代码在SQL提示符执行时,它产生了以下结果: Value of (a + b) * c / d is : 90Value of ((a + b) * c) / d is : 90Value of (a + b) * (c / d) is : 90Value of a + (b * c) / d is : 50PL/SQL procedure successfully completed.
本文转自:http://www.eduforth.com.cn/knowledge/knowledge298.html
|