Oracle SQL*Plus : How to include current schema in prompt?

标签 oracle schema sqlplus prompt

在 SQL*Plus 中,我可以设置提示以包含实例名称:

SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "

我还可以查询当前架构:

select sys_context( 'userenv', 'current_schema' ) from dual;

有没有办法让当前模式进入提示?

最佳答案

这有效:

undefine schema_display
col schema_display new_value schema_display

set termout off
select lower(sys_context('userenv', 'current_schema')) schema_display from dual
/
set termout on

set sqlprompt "&&schema_display.':'_USER'@'_CONNECT_IDENTIFIER > "

所以:

USER@SID > alter session set current_schema="TEST";

Session altered.

USER@SID > -- run the above
TEST:USER@SID > 

但是,提示将保持设置为该值,直到执行另一个 SET SQLPROMPT。您需要输入代码来切换架构并在脚本中创建 schema_display 变量(如“switch_schema.sql”):

alter session set current_schema="&new_schema"; 

undefine schema_display 
col schema_display new_value schema_display 

set termout off 
select lower(sys_context('userenv', 'current_schema')) schema_display from dual; 
set termout on 

set sqlprompt "&&schema_display.':'_USER'@'_CONNECT_IDENTIFIER > " 

&new_schema 变量使 SQL*PLUS 提示您输入要切换到的模式。

USER@SID > @switch_schema 
Enter value for new_schema: TEST 
old   1: alter session set current_schema="&new_schema" 
new   1: alter session set current_schema="TEST" 

Session altered. 

test:USER@SID >  

关于Oracle SQL*Plus : How to include current schema in prompt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8111841/

相关文章:

Oracle 数据库查询在第二次运行时抛出错误

sql - TOAD 将 &String 视为绑定(bind)变量

mysql - 使用脚本在 mysql 中创建模式

model - YANG 和 Choice - XML 是什么样子的?

sql - 如何使用 SQLPLUS 假脱机到 CSV 格式的文件?

oracle - 通过 cygwin sqlplus 连接到远程 oracle

sql - Oracle SQL 语法 : Inner Join

oracle - 如何在 Grails/GORM 中应用 NULLS LAST 排序

sql - 如何授予数据库角色对架构的执行权限?我究竟做错了什么?

oracle - 表达式 'string' 不能用作赋值目标 -SQL PLUS