首页 > 数据库 > Oracle > Oracle调用dos批处理命令
今天突然需要在存储过程里面调用外部的dos命令,找了半天都没有找到,等到自己试验成功了,发现其实简单得叻不好说话了。就像考试时记不起英语单词一样,考场绞尽脑汁都记不起来,考完打开书发现原来这么简单。
[@more@]Oracle调用dos命令用host,在unix里面缩写“!”,在NT里面缩写就是“$”,后面加你要的单独dos命令或者一个包含dos批处理命令bat文件的文件名(记住,因为当前目录是启动sqlplus时的目录,调用批处理的bat文件最好加上全局路径)。开始看到一个哥们说调用单dos命令成功了,方式是host +‘command’,估计他是成功了,但是告诉别人的方式却有误解,因为我加了个单引号死活不成功,所以写出来的东西先考虑下别人会不会误解。经我测试,加双引号或不加引号都是可以的。
单命令的就不说了,直接调用就是。下面是我做的批处理调用。
成功:
SQL> $E:nihao.bat
SQL> $ E:nihao.bat
SQL> host E:nihao.bat
SQL> $"E:nihao.bat"
SQL> $ "E:nihao.bat"
SQL> host "e:nihao.bat"
失败:
SQL> $ 'E:nihao.bat'
SQL> $'E:nihao.bat'
SQL> host 'e:nihao.bat'
host与简写还有一个区别就是动态调用参数,语法为:host &&|&。示例如下:
(1) 固定参数
define vc_cmd = 'E:nihao.bat'
host &&vc_cmd
(2) 可由dual动态生成
column vc_cmd new_value vc_cmd
select 'E:nihao.bat' vc_cmd from dual;
host &&vc_cmd
(3) 手动输入
host &vc_cmd
上面的试验,简写“$”后面加不加空格都可以运行,但是host后面无论是固定还是参数形式的,都要加个空格。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8796021/viewspace-897032/ ,如需转载,请注明出处,否则将追究法律责任。