【问题标题】:how to do two sqlplus queries and display the result in single line如何进行两个 sqlplus 查询并在单行中显示结果
【发布时间】:2013-11-24 02:48:08
【问题描述】:

我不知道sqlplus。但试图在工作中完成一项任务。任务是登录到模式并在单行中获取以下信息 - 架构名、数据库名、数据库链接名、用户名

我能够在两行中获得该信息。如果有人提出一种在一行中获取两个不同选择查询结果的简单方法,我将不胜感激。

以下工作,但在两行中给了我所需的结果。我希望它们在单行中。

SQL> select * from
 (select user || ' ' || sys_context('USERENV','DB_NAME') as Instance from dual),
 (select DB_LINK  || ' ' || username from user_db_links);

TSTSCRIPT2 ORADEV
MCCODEVTOMCCOSTG_TSTSCRIPT1  TSTSCRIPT1  

【问题讨论】:

  • 你想解决什么问题?
  • 我收到了两个回复。这解决了我的问题。我正在尝试创建一个脚本,找出所有模式下的所有 dblink,然后使用“alter database link”命令更改链接密码。每次更改架构密码时,我们都必须更改链接密码。我将使用“expect”函数编写 shell 脚本。

标签: sql oracle sqlplus


【解决方案1】:

只需指定列的显示格式。在您的情况下,由于连接了多个值,因此它将是别名。

/* Here character value is 11 characters long "a11"
   If you need it to be longer or shorter simply increase or decrease
   the value of the constant, make it "a20", for instance
*/
SQL> column instance format a11; 
SQL> column res2 format a11;

SQL> select user || ' ' || sys_context('USERENV','DB_NAME') as instance
          , DB_LINK  || ' ' || username                     as res2
       from user_db_links t

结果:

INSTANCE    RES2      
----------- -----------
HR CDB      NK1 HR 

【讨论】:

    【解决方案2】:
    select (select user || ' ' || sys_context('USERENV','DB_NAME') as Instance from dual) as user_info,
           (select DB_LINK  || ' ' || username from user_db_links where rownum < 2) as db_link
    from dual;
    

    【讨论】:

    • 谢谢。 SQL> 选择用户 || ' ' || sys_context('USERENV','DB_NAME') 作为实例,DB_LINK || ' ' ||用户名作为来自 user_db_links t 的 res2;实例 RES2 -------------------- ---------------------------- ------------------------------- TSTSCRIPT1 MCCODEV MCCODEVTOMCCOSTG_TSTSCRIPT1.SLAC.STANFORD.EDU TSTSCRIPT1 TSTSCRIPT1 MCCODEV MCCODEVTOMCCOSTG_TSTSCRIPT2.SLAC.STANFORD.EDU TSTSCRIPT2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多