我在oracle中有一个函数。该函数将返回数值(类似于20140513212746,长度为14位)。该函数将由shell脚本调用。但是shell脚本没有返回函数返回的确切值。
例如,如果oracle中的值是9999110300002,则shell将其返回为9999100000000
下面是shell脚本代码块
#!/bin/sh
sqlresult=`sqlplus -S scott/tiger<<EOF
SET ECHO OFF
SET HEADING OFF
SET FEEDBACK OFF
SELECT fn_getExecNo@db_link_name ('<HOST_NAME_TO_SEARCH>') FROM DUAL;
EOF`
echo $sqlresult
execno=`echo $sqlresult | awk '{printf( "%d", $1 )}'`
echo $execno
结果是
calling function ....
9.9991E+12 and
9999100000000
oracle函数的返回数据类型是NUMERIC或VARCHAR,shell中的值不会更改。
如何在shell中获取oracle函数返回的确切值?需要将此值与shell变量本身的值进行比较。
提前致谢!!
答案 0 :(得分:0)
尝试如下
#!/bin/sh
sqlresult=`sqlplus -S scott/tiger<<EOF
SET ECHO OFF
SET HEADING OFF
SET FEEDBACK OFF
alter session set nls_numeric_characters='. ';
SELECT to_char(fn_getExecNo@db_link_name ('<HOST_NAME_TO_SEARCH>'), 'tm') FROM DUAL;
EOF`
echo $sqlresult
execno=`echo $sqlresult | awk '{printf( "%d", $1 )}'`
echo $execno