[20211220]sqlplus简单计算器.txt

来源:这里教程网 时间:2026-03-03 17:20:53 作者:

[20211220]sqlplus简单计算器.txt --//看了tpt包calc.sql脚本,他要求输入3个参数,计算出10进制以及16进制结果. --//但是他的脚本比较灵活支持10进制以及16进制数字的输入: --//例子: SCOTT@book> @ ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SCOTT@book> @ calc 10 + 4                                 DEC                  HEX ----------------------------------- --------------------                           14.000000                    E SCOTT@book> @ calc 0x10 + 4                                 DEC                  HEX ----------------------------------- --------------------                           20.000000                   14 SCOTT@book> @ calc x10 + 4                                 DEC                  HEX ----------------------------------- --------------------                           20.000000                   14 --//我自己写一个简单一点的输入10进制,算出10进制,16进制的结果.注意输入参数中间不能有空格。 $ cat calcx.sql COL value  new_value newvalue COL calc_dec HEAD "DEC" FOR 999999999999999999999999999.999999 COL calc_hex HEAD "HEX" FOR A20 JUSTIFY RIGHT set termout off select &1 value from dual; set termout on select &newvalue calc_dec , TO_CHAR (&newvalue, 'FM0xxxxxxxxxxxxxxx') calc_hex from dual ; --//测试: SCOTT@book> @calcx 120/12                                 DEC                  HEX ----------------------------------- --------------------                           10.000000 000000000000000a SCOTT@book> @calcx power(2,10)+1                                 DEC                  HEX ----------------------------------- --------------------                         1025.000000 0000000000000401 --//我以前从网上抄来一个bash计算器,自己修改一下,定义成函数.看看在sqlplus里面是否支持bash函数调用. --//使用bc计算器,里面函数不能使用圆括号,使用中括号代替。 --//测试不行。修改成shell。 # cat //usr/local/bin/== # /bin/bash # simple calc in="$(echo "$@" | sed -e 's/\[/(/g' -e 's/\]/)/g')"; echo $in | bc -lq | tr -d '\n\\\r' | sed -e "s/\.\([0-9]*[1-9]\)0\+$/.\1/" -e "s/\.0\+$//" echo SCOTT@book> host == "scale=4;4/3" 1.3333 --//有分号要加引号才行. SCOTT@book> host == 2^240 1766847064778384329583297500742918515827483896875618958121606201292619776 --//在bc下执行出现折行情况. $ echo 2^240 | bc -lq 17668470647783843295832975007429185158274838968756189581216062012926\ 19776 SCOTT@book> host == "scale=100;a(1)*4" 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170676 --//PI小数点100位.

相关推荐