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

Append variable everytime while displaying oracle output

我有以下 mysql.sql sql 脚本。我想每次使用 sql 结果的每个语句打印 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

var ename varchar2(20)

exec :dbname := '&1'

print :dbname

我想这与您的有关。如果您再次在 SELECT 语句中将其用作 替换变量[,则无需 定义绑定变量、分配和打印值 =31=].

这样做:

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/