如何在shell中调SQLPLUS 执行SQL语句

如何在shell中调SQLPLUS 执行SQL语句,第1张

参考这个楼锋洞主

#Oracle Connection

export ORACLECONNECTSTRING='dps/password@frld world'

sqlplus -silent $ORACLECONNECTSTRING @$SQLDIR/ipb_dps_get_status.sql

ipb_dps_get_status.sql 是放在SQLDIR文件夹下的.sql file,把sql语句写在里面就可以派卖了

后尘基逗面你还可以加上log等

for tbl in `cat A.txt`

do

echo " spool test.log@B/念旅$tbl.sqlcommitspool off" | sqlplus user/档高磨行斗password@DB

done

WHENEVER OSERROR

也皮烂斗就是当出现 *** 作系统错误或者SQL错误的时候该怎么处理

例子:

sqlplus -s / <<EOF

whenever sqlerror exit SQL.SQLCODE

declare

e exception

pragma exception_init( e, -1652 )

begin

raise e

end

/

EOF是End Of File,既文件的结尾标记,在这里用历竖来标记一段代码,通常是多行

用"<<"加上一个标记就可以把一大段代码存入到一个变量中去了,在执行sqlplus时就执行变量中的代码

这里sqlplus要使用silent模式

spool a.txt

之后做的所有 *** 作都会输出到a.txt里

spool可以获取反馈的所有信息并保存到文件

每次spool都会覆盖原来的文件

然后spool off

那如果只想添加,不想覆盖

spool append a.txt

…………………………………………………………………………………………………………………………………………windows:

我们先来看WINDOWS环境该怎么处理 (不显示sql语句)

echo create table ostab (i int)|sqlplus scott/tiger;

作用就是,直接在cmd里创建了表,然后退出

define _editor=NOTEPAD

windows默认就是notepad,所燃磨以可以不用设置

create table t1 ( x int, a int )

insert into t1 values ( 1, null )

insert into t2 values ( 1, 55 )

insert into t2 values ( 1, 100 )

update ( select a, b

from t1, t2

where t1.x = t2.x )

set a = b

是不是执行错误?

那我是不是得修改这个脚本?

其实 我可以通过修改第1行就能解决这个SQL问题

那我有什么办法修改第1行?

第一行是不是update (select a,b

我要改成update ( select a, b

那我怎么样改这个语句?

因为是修改第一行

所以前面输入1 update ( select a, b

1表示第一行变成后面语句

这样第1行就修改完毕

那修改完毕后

然后执行

l或者

注意: l或者是显示所有SQL脚本

4*表示最后一行是第4行*是最后一行


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12259083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存