SQLPLUS中用new_value把查询结果传给变量

资讯 驱动中国 若水 2,137 次阅读 0 条评论
分享 Q

SQLPLUS中new_value的作用还是挺大的。利用这个倒是能解决挺多问题的。
引用这么段话:

Oracle SQL*Plus has a very useful new sub-parameter to the column parameter called new_value.

The new_value directive allows data that has been retrieved from an Oracle table to be stored as a

variable inside the SQL*Plus script.

By using the new_value parameter you can make your SQL*Plus script behave like a real

programming language, storing and addressing program variables, just like in PL/SQL.

The ability to store SQL*Plus variables and fill them with Oracle data is a very powerful

feature and makes SQL*Plus scripts more efficient because database access is reduced.
使用方法小结一下:

#!/bin/sh

export ORACLE_SID=CMPR1

export ORACLE_HOME=/app/oracle/product/9205

export PATH=$ORACLE_HOME/bin:$PATH

sqlplus -s/nolog <

conn / as sysdba

column inst_num new_value ninst_num format 99999;

column inst_name new_value ninst_name format a12;

column db_name new_value ndb_name format a12;

column dbid new_value ndbid format 9999999999;


select d.dbid dbid

, d.name db_name

, i.instance_number inst_num

, i.instance_name inst_name

from v$database d,

v$instance i;

prompt ###############Use new_value####################

select dbid,name from v$database where name=’&ndb_name’;


prompt ################Use variable###################

variable dbid number;

variable inst_num number;

begin

:dbid := &ndbid;

:inst_num := &ninst_num;

end;

/


select instance_name,instance_number from v$instance where instance_number=:inst_num;

select dbid,name from v$database where dbid=:dbid;


prompt ##############Use sql file#####################

@cs.sql &ndb_name &ndbid &ninst_num

Exit

EOF


[/app/oracle/utils/scripts]$ cat cs.sql

select dbid,name from v$database where name=’&1’;


variable dbid number;

variable inst_num number;

begin

:dbid := &2;

:inst_num := &3;

end;

/

select instance_name,instance_number from v$instance where instance_number=:inst_num;

select dbid,name from v$database where dbid=:dbid;


variable dbid number;

variable inst_num number;

begin

:dbid := &ndbid;

:inst_num := &ninst_num;

end;

/

select instance_name,instance_number from v$instance where instance_number=:inst_num;

select dbid,name from v$database where dbid=:dbid;

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友