在oracle的sqlplus中有一个命令:desc,能够简要的显示基表、视图等的结构。desc的显示结果简单明了,比较实用。虽然在Sybase ASE中的存储过程sp_help也能实现查看表结构的目的;但是,显示结果很多尤其换行混乱,让人看得眼花缭乱。显示的存储过程:sp_desc能够实现oracle的sqlplus中desc相同的功能,仅仅多了一列:列序号。

效果图如下:

存储过程sp_desc的语法如下:

------=================================================================================

use sybsystemprocs

go

if exists(select 1 from sybsystemprocs.dbo.sysobjects where type="P" and name="sp_desc")

drop proc sp_desc

go

create procedure sp_desc

@tablename varchar(128)

as

declare @table_id int

declare @char_bin_types   varchar(30)

set nocount on

begin

select @char_bin_types = char(47)+char(39)+char(45)+char(37)+char(35)+char(34)

select @table_id = object_id(@tablename)

select

"序号"=convert(varchar(3),colid),

"列名"=convert(varchar(30),column_name),

"是否为空?"=convert(varchar(7),nullable),

"类型"=convert(varchar(30),

(case scale

when NULL then

case

when charindex(type_name,",ubigint,tinyint,usmallint,uintn,floatn,smallmoneyn,daten,timen,real,bit,sysname,text,image,smalldatetime,real,longsysname,timestamp,datetimn") > 0 then type_name

else

type_name+"("+convert(varchar,precision)+")"

end

when 0 then

case

when charindex(type_name,",ubigint,tinyint,usmallint,uintn,floatn,smallmoneyn,daten,timen,real,bit,sysname,text,image,smalldatetime,real,longsysname,timestamp,datetimn") > 0 then type_name

else

type_name+"("+convert(varchar,precision)+","+convert(varchar,scale)+")"

end

else

case

when charindex(type_name,",ubigint,tinyint,usmallint,uintn,floatn,smallmoneyn,daten,timen,real,bit,sysname,text,image,smalldatetime,real,longsysname,timestamp,datetimn") > 0 then type_name

else

type_name+"("+convert(varchar,precision)+","+convert(varchar,scale)+")"

end

end

)

)

from

(

SELECT    /* INTn, FLOATn, DATETIMEn and MONEYn types */

colid = c.colid,

column_name = c.name,

nullable =    /* set nullability from status flag */

(case convert(smallint, convert(bit, c.status&8)) when 0 then "NOT NULL" else "" end),

type_name = rtrim(substring(isnull(stuff(d.type_name,

(c.status&128)/128,

char_length(d.type_name),

"numeric identity"), d.type_name),

1+isnull(d.aux,

ascii(substring("III<<

2*(d.ss_dtype%35+1)+2-8/c.length,

1))-60), 18)),

"precision" = isnull(convert(int, c.prec),

isnull(convert(int, d.data_precision),

convert(int,c.length)))

+isnull(d.aux, convert(int,

ascii(substring("???AAAFFFCKFOLS",

2*(d.ss_dtype%35+1)+2-8/c.length,1))-60)),

scale = isnull(convert(smallint, c.scale),

convert(smallint, d.numeric_scale))

+convert(smallint,

isnull(d.aux,

ascii(substring("<<<<<<<<<<<<<",

2*(d.ss_dtype%35+1)+2-8/c.length,

1))-60))

FROM

syscolumns c,

sysobjects o,

sybsystemprocs.dbo.spt_datatype_info d,

systypes t

WHERE

o.id = @table_id

AND c.id = o.id

AND c.usertype = t.usertype

AND t.type = d.ss_dtype

AND d.ss_dtype IN (111, 109, 38, 110, 43)    /* Just *N types */

AND c.usertype < 100        /* No user defined types */

UNION

SELECT    /* All other types including user data types */

colid = c.colid,

column_name = c.name,

nullable =    /* set nullability from status flag */

(case convert(smallint, convert(bit, c.status&8)) when 0 then "NOT NULL" else "" end),

type_name = rtrim(substring(isnull(stuff(d.type_name,

(c.status&128)/128,

char_length(d.type_name),

"numeric identity"), d.type_name),

1+isnull(d.aux,

ascii(substring("III<<

2*(d.ss_dtype%35+1)+2-8/c.length,

1))-60), 18)),

"precision" = isnull(convert(int, c.prec),

isnull(convert(int, d.data_precision),

convert(int,c.length)))

+isnull(d.aux, convert(int,

ascii(substring("???AAAFFFCKFOLS",

2*(d.ss_dtype%35+1)+2-8/c.length,1))-60)),

scale = isnull(convert(smallint, c.scale),

convert(smallint, d.numeric_scale)) +

convert(smallint, isnull(d.aux,

ascii(substring("<<<<<<<<<<<<<",

2*(d.ss_dtype%35+1)+2-8/c.length,

1))-60))

FROM

syscolumns c,

sysobjects o,

sybsystemprocs.dbo.spt_datatype_info d,

systypes t

WHERE

o.id = @table_id

AND c.id = o.id

AND c.usertype = t.usertype

AND t.type = d.ss_dtype

AND (d.ss_dtype NOT IN (111, 109, 38, 110, 43) /* No *N types */

OR c.usertype >= 100) /* User defined types */

) a

ORDER BY colid

end

go

------=================================================================================

存储过程sp_desc的语法请 :下载

java怎么插入oracle数据库timenstamp,Sybase数据库技术,数据库恢复专家相关推荐

  1. java代码读取dbsequence的值_JDBC读取新插入Oracle数据库Sequence值的5种方法

    //公共代码:得到数据库连接 public Connection getConnection() throwsException{ Class.forName("oracle.jdbc.dr ...

  2. JDBC读取新插入Oracle数据库Sequence值的5种方法

    Oracle的sequence实现非常灵活,所以也带来一些易用性问题,如何取到新插入记录生成的sequence值与其它数据库有较大差别,本文详国介绍了5种实现读取新插入记录sequence值的方法. ...

  3. java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)

    * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql ...

  4. Java 批量插入数据到数据库(MySQL)中

    实现Java批量插入数据库数据: package Proxy;import java.io.BufferedReader; import java.io.File; import java.io.Fi ...

  5. java mysql插入数据乱码_java向mysql数据库插入数据显示乱码的问题

    在做一个java web工程时,有时会碰到在向数据库添加数据库时,结果出现乱码"???"的问题.针对该问题的主要解决办法就是: 一.确保是否添加了字符集过滤器: 在java web ...

  6. java ora-12505_JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法

    转载至http://www.blogjava.net/itspy/archive/2007/12/20/169072.html Oracle 问题描述: 今天使用jdbc连接oracle 10.2.0 ...

  7. Oracle 9i 10g编程艺术-深入数据库体系结构——第6章:锁

    第6章                      锁 开发多用户.数据库驱动的应用时,最大的难点之一是:一方面要力争取得最大限度的并发访问,与此同时还要确保每个用户能以一致的方式读取和修改数据.为此就 ...

  8. Sybase数据库技术,数据库恢复---分享Sybase数据库知识(博客文章索引@51cto)

    Sybase数据库技术,数据库恢复 分享Sybase数据库知识 博客文章列表,更新时间:2014-12-14 Sybase数据库技术,数据库恢复 站点地图 最新文章 ASE使用with ignore_ ...

  9. Sybase数据库技术,数据库恢复---分享Sybase数据库知识(博客文章索引)

    Sybase数据库技术,数据库恢复 分享Sybase数据库知识 博客文章列表,更新时间:20141218 Sybase数据库技术,数据库恢复 » 站点地图 最新文章 ASE使用with ignore_ ...

最新文章

  1. HTML基础部分(1)字体,照片,链接
  2. 中海达ihand30手簿使用说明_如何使用RTK手簿求坐标转换参数(四参数/七参数)...
  3. QT5.11 + VS2017 环境搭建
  4. [工具库]JOJSONBuilder工具类——一键把多个bean对象数据转换为JSON格式数据
  5. 两个股市真理之间的矛盾
  6. 《JavaSE基础教程》电子版书正式发布,欢迎大家下载
  7. tomcat构建及session保持
  8. 《神经网络和深度学习》系列文章七:实现我们的神经网络来分类数字(上)...
  9. 华数工业机器人教学视频_华数工业机器人教材学习
  10. 对C#Chart控件使用整理
  11. 通过cmd上传文件ftp服务器,通过cmd完成FTP上传文件操作
  12. Lottie动画的优劣及原理
  13. 数据库SQL 某字段按首字母排序
  14. 《沈剑架构师训练营》第5章 - 数据库架构
  15. 计算机勾兑双绝是谁发明,勾兑是什么?
  16. 【Java】文如何制作帮助文档
  17. 从孙子兵法看企业价值观和企业文化
  18. c++入门必学算法 并查集
  19. 批量地导入本地的scholar.enw到endnote
  20. 杨氏双缝与等倾干涉实验Matlab仿真

热门文章

  1. SAP Spartacus的OccCmsPageNormalizer
  2. Spring Beans 自动装配
  3. SAP BOPF和Spring框架里加了注解的控制器是如何被调用的
  4. SAP UI5 control id generation by jQuery
  5. 使用Chrome的inspect element注意事项
  6. 如何修改Fiori Launchpad里Tile count 调用的时间间隔
  7. how does gateway framework treat default system flag in customizing
  8. 如何调试SAP CRM产品主数据应用后台ABAP端抛出的错误消息
  9. ABAP enablement in Sublime Text
  10. transport request 实现原理