当前位置:  开发笔记 > 数据库 > 正文

如何通过sql plus从命令行发出单个命令?

如何解决《如何通过sqlplus从命令行发出单个命令?》经验,为你挑选了4个好方法。

使用SQL Plus,您可以从命令行使用"@"运算符运行脚本,如下所示:

c:\>sqlplus username/password@databasename @"c:\my_script.sql"

但是,是否可以只运行具有类似语法的单个命令,而无需单独的脚本文件?如:

c:\>sqlplus username/password@databasename @execute some_procedure

我对此感兴趣,因为我想编写一个只执行命令的批处理文件,而不会生成一堆两行".sql"文件.



1> Patrick Cuff..:

我可以通过将它传递给SQL*Plus来运行SQL查询:

@echo select count(*) from table; | sqlplus username/password@database

@echo execute some_procedure | sqlplus username/password@databasename

一试.


@IvanG; 对于Windows批处理文件,命令前的@符号会强制命令被回显到控制台.它在您不想关闭回声但不希望在屏幕上看到命令回显的情况下很有用.在这种情况下,需要使用sqlplus命令传送的是我们要运行的SQL,而不是命令文本.

2> Eric Petroel..:

你尝试过这样的事吗?

sqlplus username/password@database < "EXECUTE some_proc /"

在UNIX中你可以这样做:

sqlplus username/password@database <

但我不确定窗户的等价物是什么.


其他操作系统用户可以看到该命令行(例如)`ps -ef`,如果你必须包含用户名和密码,最好执行"sqlplus/nolog << EOF"并让第一行为"connect username /密码".不是理想的解决方案,但它更好,因为至少它不会在`ps -ef`的输出中公开明文用户名和密码

3> javaPlease42..:

对于UNIX(AIX):

export ORACLE_HOME=/oracleClient/app/oracle/product/version
export DBUSER=fooUser
export DBPASSWD=fooPW
export DBNAME=fooSchema 

echo "select * from someTable;" | $ORACLE_HOME/bin/sqlplus $DBUSER/$DBPASSWD@$DBNAME



4> tale852150..:
sqlplus user/password@sid < sqlfile.sql

这也适用于DOS命令行.在这种情况下,文件sqlfile.sql包含您要执行的SQL.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有