将参数从批处理文件传递到sqlplus脚本

时间:2016-10-03 14:56:27

标签: sql oracle batch-file sqlplus

我正在尝试使用我的用户名和密码获取一个文件,以便我每天运行一些脚本。我现在有几个脚本正在使用具有我的用户名和密码的批处理文件。

我的密码批处理文件如下所示。 parms.bat

Rem Oracle Db
set odbUsername=myUserName
set odbpassword=myPassword

我的其他脚本调用该批处理文件并获取信息。我有几个sql脚本,我还需要使用这些用户名和密码。我似乎无法让他们工作。但我对sqlplus脚本很新。

我的Sql脚本看起来像这样。

CONNECT myusername@Oracleddbname/mypassword

SET FEEDBACK OFF;
SET ECHO OFF;
SET TERMOUT OFF;
SET HEADING OFF;
SET PAGESIZE 0;
SET LINESIZE 500;
SET TIMING OFF;
SET TRIMSPOOL ON;
SET COLSEP ',';

SPOOL C:\FileTransfers\MeterData.csv

PROMPT CoopCode,MeterID,DateTime,Value
SELECT DISTINCT
          a.coopcode
       || ','
       || a.meterno
       || ','
       || a.readdatetime
       || ','
       || a.usage
  FROM temp_reconfigured a, temp_goodsence b
 WHERE a.coopcode = b.coopcode AND a.meterno = b.meterno
;

Spool off;

EXIT;

我使用通过Windows任务计划程序运行的批处理文件调用此脚本。

看起来像这样。

sqlplus /nolog        @C:\FileTransfers\AutomationScripts\GoodSence\SpoolGoodSenceDataSet.sql

所以我想将用户名从批处理文件传递给sql。我已经阅读了几件事情并尝试了大约30件,似乎没有任何工作。感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以这样传递参数:

<强> script.sql:

select '&1' from dual;

电话:

D:\>sqlplus user/password@db @d:\script.sql 'value'

SQL*Plus: Release 11.2.0.2.0 Production on Lun Ott 3 17:02:10 2016

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

old   1: select '&1' from dual
new   1: select 'value' from dual

'VALU
-----
value

答案 1 :(得分:0)

只要输入那个就让我考虑在调用期间传递它和在sql中连接。然后我编辑了我的SQL并取出了连接语句

所以这有效......

echo Get Parameters
call C:\FileTransfers\AutomationScripts\parms.bat
echo %odbUsername%
echo %odbpassword%

sqlplus myusername@oracledb/%odbpassword%@C:\FileTransfers\AutomationScripts\GoodSence\SpoolGoodSenceDataSet.sql