每次显示oracle输出时附加变量

时间:2015-04-03 04:52:34

标签: oracle oracle11g sqlplus

我有以下mysql.sql sql脚本。我想每次使用sql result的每个语句打印dbname。

我该怎么做?

另外,我想在脚本中添加错误处理。

mysql.sql

set colsep ',';
set trimout off;
set pagesize 0;
set trimspool off;
set feedback off;
set heading on;

spool C:sql_data\res_pre.csv app
var ename varchar2(20)

exec :dbname := '&1'

print :dbname
select '&dbname',user_name, user_id from employee where  designation = 'manager';

spool off
exit;

目前的输出是:

db1
abc 123
xyz 231
db2
efg 143
rst 234

我想要输出如下:

db1 abc 123
db1 xyz 231
db2 efg 143
db2 rst 234

1 个答案:

答案 0 :(得分:0)

  

var ename varchar2(20)

     

exec:dbname:='& 1'

     

print:dbname

我猜这与你的previous question有关。如果您再次在SELECT语句中将其用作替换变量,则无需定义绑定变量,分配并打印值

这样做:

SQL> set colsep ',';
SQL> set trimout off;
SQL> set pagesize 0;
SQL> set trimspool off;
SQL> set feedback off;
SQL> set heading on;
SQL> var dbname varchar2(20)
SQL> select '&dbname',ename, empno from emp where  deptno = 10;
Enter value for dbname: db1
old   1: select '&dbname',ename, empno from emp where  deptno = 10
new   1: select 'db1',ename, empno from emp where  deptno = 10
db1,CLARK     ,      7782
db1,KING      ,      7839
db1,MILLER    ,      7934
SQL>

要取消替换变量验证输出,您需要SET VERIFY OFF

例如,

SQL> SET VERIFY OFF
SQL> select '&dbname',ename, empno from emp where  deptno = 10;
Enter value for dbname: db1
db1,CLARK     ,      7782
db1,KING      ,      7839
db1,MILLER    ,      7934
SQL>

更新错误记录

您可以使用新的SQL * Plus错误记录功能。我写了一篇文章,看看它http://lalitkumarb.wordpress.com/2014/01/21/sqlplus-error-logging-new-feature-release-11-1/