可能重复:
Select columns into local variable from sql script using shell script
我正在尝试编写一个unix脚本,该脚本将使用sql查询检索参数,然后使用此参数运行脚本。 暂时,我只是试着让它回应检索到的参数。 在toad(oracle 8)上运行正常的sql查询是:
select billcycle from bc_run
where billcycle not in (50,16)
and control_group_ind is null
and billseqno=6043
上面的查询给出了一个数字。
现在我写的脚本是:
#!/bin/bash
echo "this script will print the billcycle date"
v_bc=`sqlplus -s /@bscsprod <<EOF
select billcycle from bc_run
where billcycle not in (50,16)
and control_group_ind is null
and billseqno=6043`
echo "billcycle number is $v_bc"
运行文件时的结果是
billcycle number is
没有数字。
任何想法有什么不对?也许是连接到sql server的语法?
感谢 阿萨夫。
答案 0 :(得分:0)
我认为你也应该以EOF结束:
v_bc=`sqlplus -s /@bscsprod <<EOF
select billcycle from bc_run
where billcycle not in (50,16)
and control_group_ind is null
and billseqno=6043
EOF`
编辑:哎呀,由Alex Poole纠正。
答案 1 :(得分:0)
链接的重复问题APC显示了一个工作示例,但澄清您有两个问题。第一个是非致命的,只是你没有EOF
,因为Rembunator指出(尽管它在答案中的位置错误)。
更重要的是,虽然查询中没有终止;
,因此SQL * Plus不会执行它 - 它只是在没有输出的情况下退出。
如果您在SQL * Plus命令提示符下键入原始查询,它会让您进一步提示等待输入,如果您再次点击return,则返回正常提示,而不实际执行查询:
SQL> select billcycle from bc_run
2 where billcycle not in (50,16)
3 and control_group_ind is null
4 and billseqno=6043
5
SQL>
您可能还想要至少一些输出格式。所以这应该有效:
v_bc=`sqlplus -s /@bscsprod <<EOF
set pagesize 0
select billcycle from bc_run
where billcycle not in (50,16)
and control_group_ind is null
and billseqno=6043;
EOF`