博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

如何实现批处理文件传参数给SQLPLUS

Posted on 2012-11-23 11:26  徐正柱-  阅读(3115)  评论(0编辑  收藏  举报

 第一:批处理文件drop_table.bat

说明:

批处理中 %~dp0  表示批处理文件所处的当前目录

'%p_owner%' '%p_path%' 是批处理传给SQLPLUS的参数

 

@echo *****************************************************
@echo 开发环境数据库无效表清理
@echo 首先,连接数据库lcam_develop/lcam4ddl@lacm5130
@echo 接着会生成drop_table_sql.sql
@echo 然后执行drop_table_sql.sql
@echo *****************************************************

@echo off

set /p p_user="请输入用户名lcam_develop:"
set /p p_password="请输入用户密码lcam4ddl:"
set /p p_sid="请输入数据库连接串(TNS名)lacm5130:"
set /p p_owner="请输入数据库查询条件LCAM_DEVELOP:"
set /p p_path="请输入文件存放盘符(如输入E):"

sqlplus %p_user%/%p_password%@%p_sid%  @"%~dp0generate_drop_table_sql.sql" '%p_owner%' '%p_path%'

sqlplus %p_user%/%p_password%@%p_sid%  @"%p_path%:\drop_table.sql"set echo off

 

第二:批处理中调用的脚本generate_drop_table_sql.sql

说明:

'&1' 对应批处理中的 '%p_owner%'

'&2' 对应批处理中的 '%p_path%'


set feedback off
set newpage none
set pagesize 5000
set linesize 500
set verify off
set heading off
define owner='&1'
define path='&2'
SPOOL &path:\drop_table.sql
select 'DROP TABLE ' || a.table_name ||';' FROM dba_tables a 
where a.owner=upper('&owner') AND a.table_name like 'ZK%';
SPOOL OFF
exit;