我有以下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
答案 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/