oracle - 使用 oracle toad 获取 Oracle 查看代码信息
问题描述
我想在查询窗口本身中查看预先存在的视图的代码,而无需进入模式浏览器或直接进入该对象。如何在 Oracle TOAD 中查看查看代码?
我们可以看到在 SQL Server 中使用以下脚本
sp_helptext 'viewname'
在甲骨文我试过如下
select * from USER_SOURCE where Name ='viewname'
但它没有给出视图名称代码信息。如何在 Oracle 中完成这项任务?
解决方案
例子:
SQL> create or replace view v_emp
2 as
3 select d.deptno,
4 d.dname,
5 e.empno,
6 e.ename,
7 e.job,
8 e.sal
9 from emp e join dept d
10 on e.deptno = d.deptno
11 where d.deptno <> 30;
View created.
您正在查询USER_SOURCE
,但该视图不包含视图 - 请USER_VIEWS
改为检查。与您的查询类似,查询不返回任何内容:
SQL> select text
2 from user_views
3 where view_name = 'v_emp';
no rows selected
为什么没有选择行?因为默认情况下 Oracle 以大写形式存储对象名称,除非您将名称括在双引号中,但是 - 在 Oracle 中 - 这通常是一个坏主意,因为您总是必须用双引号引用对象,匹配字母大小写。默认情况下,您可以以任何您想要的方式引用它们。
所以:
SQL> select text
2 from user_views
3 where view_name = 'V_EMP'; --> note uppercase here
TEXT
----------------------------------------------------------------
select d.deptno,
d.dname,
e.empno,
e.ename,
e.job,
SQL>
但是,嘿!部分代码丢失!不过,那是SQL Plus。由于视图文本存储到LONG
数据类型列中:
SQL> desc user_views
Name Null? Type
----------------------------- -------- --------------------
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG --> here it is
TYPE_TEXT_LENGTH NUMBER
<snip>
你会
SQL> set long 10000
SQL> select text
2 from user_views
3 where view_name = 'V_EMP';
TEXT
----------------------------------------------------------------
select d.deptno,
d.dname,
e.empno,
e.ename,
e.job,
e.sal
from emp e join dept d
on e.deptno = d.deptno
where d.deptno <> 30
SQL>
并查看整个视图代码。
在TOAD中,结果是一WIDEMEMO
列,因此您必须双击它才能查看结果(不使用SET LONG
命令;它仅与 SQL*Plus 相关)。
推荐阅读
- jenkins - UnsupportedOperationException:必须使用接口 java.util.List 的实现指定 $class
- python - 使用 BeautifulSoup 4 和递归捕获 HTML 嵌套标签的结构
- c++ - 矢量大小()被 NetBeans 标记为错误:无法解析标识符
- c - C 中的预期表达式
- javascript - MYSQL - PHP - 使用从提交按钮传递的变量更新数据库中的值
- javascript - 从 dataTable 行访问嵌套的对象数组
- date - 如果 golang 中的条件出错
- xaml - 图像未显示在 MVVM XAML Xamarin 表单上
- python - 通过python加载xgen预览
- python - Plotly Scatter3d:如何强制 3D 轴具有相同的比例/纵横比?