【问题标题】:Append variable everytime while displaying oracle output每次显示 oracle 输出时附加变量
【发布时间】:2015-04-03 14:00:29
【问题描述】:

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

【问题讨论】:

    标签: oracle oracle11g sqlplus


    【解决方案1】:

    var 名称 varchar2(20)

    exec :dbname := '&1'

    打印:数据库名称

    我猜这与您的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/

    【讨论】:

    • 我不想在输出中出现这样的东西-> 旧 1: select '&dbname',ename, empno from emp where deptno = 10 new 1: select 'db1',ename, empno from emp where deptno = 10
    • set errorlogging on; 正确阅读文章,一切都在细节中提及。并将答案标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多