ORA-31603: 对象 "SHIHUA.VT_VAS" 属于类型 TABLE, 在方案 "SHIHUA" 中未找到
2013-06-24 16:16
351 查看
在使用DBMS_METADATA.GET_DDL包查询表结构的时候出现问题
具体如下:
select DBMS_METADATA.GET_DDL('TABLE','SHIHUA.VT_VAS') from dual
ORA-31603: 对象 "SHIHUA.VT_VAS" 属于类型 TABLE, 在方案 "SHIHUA" 中未找到
ORA-06512: 在 "SYS.DBMS_METADATA", line 1546
ORA-06512: 在 "SYS.DBMS_METADATA", line 1583
ORA-06512: 在 "SYS.DBMS_METADATA", line 1901
ORA-06512: 在 "SYS.DBMS_METADATA", line 2792
ORA-06512: 在 "SYS.DBMS_METADATA", line 4333
ORA-06512: 在 line 1
分析:请看此包定义
GET_DDL函数返回创建对象的原数据的DDL语句,详细参数如下
-- object_type ---需要返回原数据的DDL语句的对象类型
-- name --- 对象名称
-- schema ---对象所在的Schema,默认为当前用户所在所Schema
-- version ---对象原数据的版本
-- model ---原数据的类型默认为ORACLE
-- transform. - XSL-T transform. to be applied.
-- RETURNS: 对象的原数据默认以CLOB类型返回
定义:
FUNCTION get_ddl ( object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform. IN VARCHAR2 DEFAULT 'DDL') RETURN CLOB;
所以正确的语句是:select DBMS_METADATA.GET_DDL('TABLE','VT_VAS') from dual;或者 select DBMS_METADATA.GET_DDL('TABLE','VT_VAS','SHIHUA') from dual;
另外如果显示不全的话是格式化问题:
SQL> select DBMS_METADATA.GET_DDL('TABLE','VT_VAS','SHIHUA') from dual;
DBMS_METADATA.GET_DDL('TABLE',
--------------------------------------------------------------------------------
CREATE TABLE "SHIHUA"."VT_VAS"
( "VACOUNT" NUMBER(*,0) NOT NULL ENABLE,
可以使用格式化语句规范下:
set linesize 1000
set pagesize 999999
set long 90000 ----设置完了即可其效果
另外可以查看索引表(user_indexes),约束(user_constraints)等查看其结构
具体如下:
select DBMS_METADATA.GET_DDL('TABLE','SHIHUA.VT_VAS') from dual
ORA-31603: 对象 "SHIHUA.VT_VAS" 属于类型 TABLE, 在方案 "SHIHUA" 中未找到
ORA-06512: 在 "SYS.DBMS_METADATA", line 1546
ORA-06512: 在 "SYS.DBMS_METADATA", line 1583
ORA-06512: 在 "SYS.DBMS_METADATA", line 1901
ORA-06512: 在 "SYS.DBMS_METADATA", line 2792
ORA-06512: 在 "SYS.DBMS_METADATA", line 4333
ORA-06512: 在 line 1
分析:请看此包定义
GET_DDL函数返回创建对象的原数据的DDL语句,详细参数如下
-- object_type ---需要返回原数据的DDL语句的对象类型
-- name --- 对象名称
-- schema ---对象所在的Schema,默认为当前用户所在所Schema
-- version ---对象原数据的版本
-- model ---原数据的类型默认为ORACLE
-- transform. - XSL-T transform. to be applied.
-- RETURNS: 对象的原数据默认以CLOB类型返回
定义:
FUNCTION get_ddl ( object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform. IN VARCHAR2 DEFAULT 'DDL') RETURN CLOB;
所以正确的语句是:select DBMS_METADATA.GET_DDL('TABLE','VT_VAS') from dual;或者 select DBMS_METADATA.GET_DDL('TABLE','VT_VAS','SHIHUA') from dual;
另外如果显示不全的话是格式化问题:
SQL> select DBMS_METADATA.GET_DDL('TABLE','VT_VAS','SHIHUA') from dual;
DBMS_METADATA.GET_DDL('TABLE',
--------------------------------------------------------------------------------
CREATE TABLE "SHIHUA"."VT_VAS"
( "VACOUNT" NUMBER(*,0) NOT NULL ENABLE,
可以使用格式化语句规范下:
set linesize 1000
set pagesize 999999
set long 90000 ----设置完了即可其效果
另外可以查看索引表(user_indexes),约束(user_constraints)等查看其结构
相关文章推荐
- ORA-31603: object "orders" of type TABLE not found in schema "SYSTEM"
- 遍历对象类型,将null转换为""
- Oracle报错:"ORA-18008: 无法找到 OUTLN 方案 "的解决方案
- 无法将类型为"Microsoft.Office.Interop.Excel.ApplicationClass"的 COM 对象强制转换
- "未能找到类型或命名空间名称",引用dll的时候出错
- ASP.NET(IIS)出现"没有为请求类型"GET"找到 HTTP 处理程序"
- ORA-31603: object "orders" of type TABLE 的解决方法
- 遇到“拒绝了对对象的 EXECUTE 权限”和“无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限”的问题
- ORA-31684:对象类型 USER:"USERNAME" 已存在
- 写一个方法,参数接收一个String类型的对象,最终可以把这个字符串参数中出现过的每一个字母打印出来 例如: "wwqweqdasdafdsfdsferer" 将来方法接收这个参数后会打印:
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
- 无法创建链接服务器 "ORCL" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例 (错误:7302)
- 阿里云虚拟主机使用MVC4.0 报错找到多个与名为"Home"的控制器匹配类型
- oracle 物化视图 ORA-23413: 表 "xxx"."xx" 不带实体化视图日志
- VS 2005 "没有找到MSVCR80D.dll,因此这个应用程序未能启动"
- 未能找到类型或命名空间名称"xxxxxx"的真正原因
- 错误 602: 未能在 sysindexes 中找到数据库 ID 9 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。
- "格式太旧或是类型库无效。 (异常来自 HRESULT:0x80028019 (TYPE_E_UNSUPFORMAT))"
- "ORA-01460: 转换请求无法实现或不合理"及C#操作Blob总结
- 报错:必须为元素类型 "insert" 声明属性 "resultMap"的解决