test.BAT部分
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" @echo off sqlplus user/pwd@crm1 @微信统计.sql "C:Program FilesWinRARRar.exe" a %ymd%.rar *.csv copy %ymd%.rar Y:kdccCRMonlinecs微信统计\%ymd%.rar exit
test.sql部分
set echo off set linesize 10000 set pagesize 50000 set colsep ',' spool d:aa.csv select * from test; spool off
1 set echo off 显示start启动的脚本中的每个sql命令,缺省为on 2 t linesize 1行能表示的字节数 3 set pagesize 0 输出每页行数,缺省为24,为了避免分页,可设定为0,如果为0,则不会输出表头部分。 4 set trimspool on 去除重定向(spool)输出每行的拖尾空格,缺省为off 5 set feedback off 回显本次sql命令处理的记录条数,缺省为on 6 set colsep ',' 域输出分隔符
替换变量(仅用于SQL *Plus或者用于原理和SQL *Plus相同的开发工具): 临时存储值 利用它可以达到创建通用脚本的目的 利用它可以达到和用户交互,故在SQL *Plus中又称交互式命令 替换变量的格式式在变量名称前加一个&,以便在运行SQL命令时提示用户输入替换数据,然后按输入数据运行SQL命令 语法: (1)& :“&变量名”eg:&name; 生命周期:单次引用中,不需要声明,如果替换字符或日期类型,最好用单引号扩起 使用范围:where、order by、列表达式、表名、整个SELECT 语句中 (2)&& :“&&变量名”eg:&&name; 生命周期:整个会话(session连接),不需要声明 (3)define :“define 变量名=变量值”eg:DEFINE a = clark; 生命周期:整个会话,预先声明,使用时用&引用声明的变量 define variable=用户创建的CHAR类型的值:define 变量名=值; define 变量名:查看变量命令。 undefine 变量名:清除变量 define:查看在当前会话中所有的替换变量和它们的值 (4)accept 生命周期:整个会话 预先声明,可以客户化提示信息,使用时用&引用声明的变量。 定义: accept 变量名name number/char/date prompt '提示信息内容'即:ACC[EPT] variable [NUM[BER] | CHAR | DATE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE] 解释: PROMPT命令:用于输出提示用户的信息,以便使用户了解脚本文件的功能和运行情况 PAUSE命令:用于暂停脚本文件的运行 HIDE选项:用于隐藏用户的输入,使别人不可见,安全 这条命令的意思是:当plsql程序段执行到变量name的时候,此时需要用户的交互才能继续执行下去,plsql程序段会显示“提示信息内容”让用户输入相关信息(如果指定hide选项,那么在接下去用户输入的东西将被用星号显示出来增加安全,有点像输入密码),用户输入的内容被接收到并且把它付给name,关于在“提示信息内容”下用户输入的内容的类型,plsql程序段开发人员来通过number/char/date指定,变量name得到正确的值以后,继续执行相关下面的程序! 例:accept a char prompt '请输入员工的雇佣时间(yyyy-mm-dd):' hide 例:accept a char prompt 'input a:' hide verify:是否给出原值及新值提示。 set verify on/off;