2015-04-03 63 views
1

我有以下mysql.sql sql脚本。我希望每次使用sql结果的每条语句都打印dbname。显示oracle输出时每次追加变量

我该怎么做?

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

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 

回答

0

变种ENAME VARCHAR2(20)

EXEC:DBNAME:= '& 1'

打印: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/

+0

我不希望这样的事情在输出 - >旧1:选择'&dbname',ename,empno从emp where deptno = 10 新1:选择'db1', ename,empno从emp那里deptno = 10 – angel 2015-04-03 05:37:05

+0

谢谢..如何处理错误可以üPLZ解释 – angel 2015-04-03 05:43:48

+0

看到我更新的答案。请将其标记为已回答。 – 2015-04-03 06:00:36