在shell脚本中使用 isql 执行SQL语句 查询sybase数据库中满足条件的记录条数,怎么把查询结果赋给变量?
语句如下:#!/bin/bashisql-Unatuser-Pzjtt@nat-Snatdb<<ENDusenatdbgoselectcount(*)fromtest_u...
语句如下:
#!/bin/bash
isql -U natuser -P zjtt@nat -S natdb <<END
use natdb
go
select count(*) from test_userdata
go
END
这个执行完后,我想判断是否存在记录,存在的话我就update,不存在的话我就insert,但是不知道怎么把结果赋给变量,也就不知道该怎么判断。刚学shell,很多概念不大懂,在线等。 展开
#!/bin/bash
isql -U natuser -P zjtt@nat -S natdb <<END
use natdb
go
select count(*) from test_userdata
go
END
这个执行完后,我想判断是否存在记录,存在的话我就update,不存在的话我就insert,但是不知道怎么把结果赋给变量,也就不知道该怎么判断。刚学shell,很多概念不大懂,在线等。 展开
1个回答
展开全部
注意此处:
isql -U natuser -P zjtt@nat -S natdb <<END
如下供参考
·1 若要重定向到文件
isql -U natuser -P zjtt@nat -S natdb <<END >out.txt
即将查询结果重定向到out.txt文件中
·2若要输出至变量
isql -U natuser -P zjtt@nat -S natdb <<END |read xarg
·3若要循环输出至变量,可参照read方式类推
isql -U natuser -P zjtt@nat -S natdb <<END
如下供参考
·1 若要重定向到文件
isql -U natuser -P zjtt@nat -S natdb <<END >out.txt
即将查询结果重定向到out.txt文件中
·2若要输出至变量
isql -U natuser -P zjtt@nat -S natdb <<END |read xarg
·3若要循环输出至变量,可参照read方式类推
追问
今天测试 写到文件可行,写到变量貌似不行。不过最后我用shell调用存储过程解决了。
追答
【基于oracle数据库】
·1、如果想将sqlplus的多个查询结果循环输出至变量,那是不明智的选择。
-->因为,sqlplus的查询有点儿封闭,如果采用while循环将查询结果赋值给变量,那就会导致每输出一行,就会执行一次sqlplus,效率低下至极,所以一般都是将查询结果为多行的操作先一次输出至文件,在利用文件执行遍历。附利用sqlplus执行多行查询并输出至变量:
sqlplus -s uid/pwd@ora_tns <<!| while read stout
select col_a,col_b from table;
!
do
echo $col_a,$col_b
done
______________________________________________________________________
没用过Sybase啊,抱歉
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询