Linux/Unix shell sql 之间传递变量_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3888 | 回复: 1   主题: Linux/Unix shell sql 之间传递变量        上一篇   下一篇 
yd7563337
注册用户
等级:少将
经验:10191
发帖:128
精华:1
注册:2011-8-9
状态:离线
发送短消息息给yd7563337 加好友    发送短消息息给yd7563337 发消息
发表于: IP:您无权察看 2015-7-21 14:36:55 | [全部帖] [楼主帖] 楼主

    1、shell变量接受sql返回值之方式一  

    oracle@SZDB:~> more ./retval.sh

    #!/bin/bash

    RETVAL=`sqlplus -silent scott/tiger <<EOF

    SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF

    SELECT * FROM emp WHERE ename='SCOTT';

    EXIT;

    EOF`

    if [ -z "$RETVAL" ]; then

    echo "No rows returned from database"

    exit 0

    else

    echo $RETVAL

    fi

    oracle@SZDB:~> chmod u+x retval.sh

    oracle@SZDB:~> ./retval.sh

    7788 SCOTT ANALYST 756619-APR-8734171.8820

    2、shell变量接受sql返回值之方式二  

    oracle@SZDB:~> more ./retval_2.sh

    #!/bin/bash

    sqlplus -S "scott/tiger" <<EOF

    SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF

    col cnt new_value v_cnt

    SELECT count(*) cnt FROM emp WHERE deptno=10;

    exit v_cnt

    EOF

    VALUE="$?"

    echo "show rows for deptno 10:$VALUE"

    3、将shell变量作为参数传递给sql脚本  

    oracle@SZDB:~> more ./retval_3.sh

    #!/bin/bash

    v_empno="$1"

    sqlplus -S "scott/tiger" <<EOF

    SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF

    SELECT ename FROM emp WHERE empno=$v_empno;

    exit

    EOF

    exit

    oracle@SZDB:~> ./retval_3.sh 7788

    SCOTT

    --转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
k3neeb
注册用户
等级:上尉
经验:799
发帖:15
精华:0
注册:2015-5-28
状态:离线
发送短消息息给k3neeb 加好友    发送短消息息给k3neeb 发消息
发表于: IP:您无权察看 2016-5-16 10:51:21 | [全部帖] [楼主帖] 2  楼

awk使用shell变量

1."'$var'"

#!/bin/bash
var="test"
awk 'BEGIN{print "'$var'"}'

这种写法要求变量var中不含有空格。若var中含有空格,那么就要用 “‘“$var”’”

2.export变量,然后用ENVIRON[“var”]

#!/bin/bash
var="test"
export var
awk 'BEGIN{print ENVIRON["var"]}'

3.使用-v选项。

#!/bin/bash
var="test"
awk -v nvar="$var" 'BEGIN{print nvar}'

shell使用awk传递出来的变量

eval

along@along-laptop:~/code/shell/shell$ cat awktest.sh
#!/bin/bash
var1="test"
var2="along"

eval $(awk 'BEGIN{print "var1=along;var2=test"}')
echo "var1:"$var1
echo "var2:"$var2
along@along-laptop:~/code/shell/shell$ ./awktest.sh
var1:along
var2:test




赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论