我试图将cat1.txt作为变量($ 2),以便将它插入到sql select语句中。有没有办法做到这一点?
my cat1.txt
1111
2334
2234
3333
4444
....
....
etc.
我的SQL声明
set echo off linesize 280 pagesize 0 newpage 0 feedback 1 verify off head off trimspool on
alter session set sort_area_size=104857600;
define filename = &1
spool &&filename
prompt DATE TIME Service Name Amount
select trim(to_char(trans_time,'yyyymmdd')) || chr(9) ||
trim(to_char(trans_time,'hh24miss')) || chr(9) ||
trim(prod_name)|| chr(9) ||
(prod_price)
where m_date = 11 and day >= 23 and day <= 30
and (prod_bill) in ('1111','2334','2234','3333','4444')
/
spool off
exit
我想试试这个,请看下面。而不是手动键入prod_bill使其像文件名一样变量。我应该添加到我的shell脚本的任何东西?谢谢:-)
from prod_trans
where m_date = 11 and day >= 23 and day <= 30
and (prod_bill) in ($2)
我的SHELL SCRIPT
#!/bin/sh
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=prod
export ORACLE_HOME=/u01/app/oracle/product/9.2.0
export ORACLE_BASE ORACLE_HOME ORACLE_SID
export PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin:/usr/sbin:/opt/java1.5/bin
export USERNAME=prods
export PASSWORD=prods
export OUT_PATH=/home/prod/reports/adhoc/REp
export SCRIPT=$OUT_PATH/BICScripts/Translog
export OUTPUT=/home/prod/reports/adhoc/REp/Scripts/log/OUTPUT
export FILENM=$OUTPUT/log_`date +%y%m%d`.txt
sqlplus -s $USERNAME/$PASSWORD@$ORACLE_SID @$SCRIPT/log.sql $FILENM
答案 0 :(得分:1)
#!/bin/sh
v_var=$1
sqlplus -S system/manager << EOF`enter code here`
SELECT username, account_status, expiry_date
FROM dba_users WHERE lower(username)=lower('$v_var');
exit;
EOF
希望它能解决问题,我的回答是正确的。
答案 1 :(得分:0)
我不知道是否有任何方法可以从shell脚本访问Oracle数据库,但是你可以使用例如Perl吗?我想使用DBI来访问数据库会非常容易。
当然你可以使用shell脚本解析.sql -file,直接将cat1.txt中的prod_bills添加到它。