楼主: qingyun

[第三方工具] 〓〓青云超人性化oracle工具〓〓

[复制链接]
论坛徽章:
0
201#
发表于 2010-9-3 23:11 | 只看该作者
佩服

使用道具 举报

回复
论坛徽章:
26
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
202#
 楼主| 发表于 2010-9-10 12:02 | 只看该作者
呵呵,好久不更新了,这个工具其实很多地方都开放的,内部所用到的所有sql和plsql都放在info.mdb里;
有些数据字典的实现,可以自己修改的;


很久前,我就想做一个更加表,视图,函数,过 程的名字,能够制作各种自己想要的脚本;

比如:sqlserver有自增长字段;oracle没有,但是可以变通的获取,方法是:建主键,建序列,建触发器;
最好用脚本,所以我这个工具的脚本是:


  1. /*  功能点: 对自增长主键字段进行自动设置(主键,序列,触发器)*/
  2. DECLARE
  3.   V_OWNER VARCHAR2(30) := :OWNER;
  4.   V_OBJECT_NAME VARCHAR2(30) := :OBJECT_NAME;
  5.   V_OBECT_TYPE  VARCHAR2(30) := :OBECT_TYPE ;
  6.   V_FIRST_COLUMN VARCHAR2(50);
  7.   V_SCRIPT       CLOB;

  8.   TYPE TREC IS RECORD(
  9.     sSql  VARCHAR2(400),
  10.     sHint VARCHAR2(40));

  11.   TYPE TArrayRec IS TABLE OF TREC INDEX BY BINARY_INTEGER;
  12.   ArrayRec TArrayRec;

  13. BEGIN

  14.   --得到第一个字段
  15.   BEGIN
  16.   SELECT COLUMN_NAME
  17.     INTO V_FIRST_COLUMN
  18.     from dba_tab_columns
  19.    where owner = V_OWNER
  20.      AND TABLE_NAME = V_OBJECT_NAME
  21.      AND COLUMN_ID = 1;
  22.    EXCEPTION
  23.      WHEN NO_DATA_FOUND THEN
  24.        :SCRIPT:='用户['||V_OWNER||']下不存在表['||V_OBJECT_NAME||']';
  25.     END;
  26.   /*1.创建主键*/
  27.   ArrayRec(1).sSql := 'ALTER TABLE ' || V_OBJECT_NAME ||
  28.                       ' ADD CONSTRAINT PK_' || V_OBJECT_NAME ||
  29.                       ' PRIMARY KEY (' || V_FIRST_COLUMN || ') ';
  30.   ArrayRec(1).sHint := '创建主键';

  31.   /*2.创建序列*/

  32.   ArrayRec(2).sSql := 'CREATE SEQUENCE ' || V_FIRST_COLUMN || '_SEQ ' ||
  33.                       CHR(13) || CHR(10) || 'INCREMENT BY 1 ' ||
  34.                       'START WITH 1 ' || CHR(13) || CHR(10) ||
  35.                       'NOMAXVALUE ' || 'NOMINVALUE ' || 'NOCYCLE  ' ||
  36.                       CHR(13) || CHR(10) || 'CACHE 20 ' || 'ORDER ';

  37.   ArrayRec(2).sHint := '创建序列';

  38.   /*3.创建触发器*/

  39.   ArrayRec(3).sSql := 'CREATE  TRIGGER ' || V_OBJECT_NAME || '_TR ' ||
  40.                       CHR(13) || CHR(10) || ' BEFORE INSERT   ' || CHR(13) ||
  41.                       CHR(10) || ' ON  ' || V_OBJECT_NAME || CHR(13) ||
  42.                       CHR(10) || ' REFERENCING OLD AS OLD NEW AS NEW ' ||
  43.                       CHR(13) || CHR(10) || ' FOR EACH ROW  ' || CHR(13) ||
  44.                       CHR(10) || ' BEGIN  SELECT ' || V_FIRST_COLUMN ||
  45.                       '_SEQ.NEXTVAL INTO :NEW.' || V_FIRST_COLUMN ||
  46.                       CHR(13) || CHR(10) || ' FROM DUAL; ' || CHR(13) ||
  47.                       CHR(10) || 'END ';

  48.   ArrayRec(3).sHint := '创建触发器';

  49.   FOR i IN 1 .. ArrayRec.COUNT
  50.   LOOP
  51.     BEGIN
  52.       V_SCRIPT := V_SCRIPT || '--' || ArrayRec(i).sHint || CHR(13) ||
  53.                   CHR(10);
  54.       V_SCRIPT := V_SCRIPT || ArrayRec(i).sSql ||';'|| CHR(13) || CHR(10);
  55.     END;
  56.   END LOOP;
  57.   :SCRIPT:=V_SCRIPT;

  58. END;
复制代码




程序上传上去了,老地方:
http://www.daizhicun.com/myworks/OracleDbTools.rar

使用道具 举报

回复
论坛徽章:
0
203#
发表于 2010-9-10 21:11 | 只看该作者
工具挺好用的,但是只能取得本地的Oracle的表,如果连接远程的就会报表或者是视图不存在,但是同样的用户可以通过PL/SQL Developer连接,请问是什么原因?谢谢

使用道具 举报

回复
论坛徽章:
26
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
204#
 楼主| 发表于 2010-9-10 21:54 | 只看该作者
原帖由 aoxiangdeyin 于 2010-9-10 21:11 发表
工具挺好用的,但是只能取得本地的Oracle的表,如果连接远程的就会报表或者是视图不存在,但是同样的用户可以通过PL/SQL Developer连接,请问是什么原因?谢谢


理论上是可以的,或者多试几次
我连互联网上的oracle数据库都是可以的。具体报错信息发到我的信箱里:daizhicun@126.com
如果只是本地的话,那么就走的ipc模式,没有通过监听;也就是登陆的时候不输入serverName;

--
也许是作为客户端,登录到服务器上的用户名权限不够,我开发的时候为了得到些更丰富的字典信息,都是一很高权限做的;所以以后我完善的时候,要考虑到权限不足的情况

[ 本帖最后由 qingyun 于 2010-9-11 00:02 编辑 ]

使用道具 举报

回复
论坛徽章:
0
205#
发表于 2010-9-13 14:19 | 只看该作者
强悍

使用道具 举报

回复
论坛徽章:
11
2010新春纪念徽章
日期:2010-03-01 11:19:08暖羊羊
日期:2015-06-30 09:10:10马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11问答徽章
日期:2013-12-18 19:10:31茶鸡蛋
日期:2013-03-07 15:34:132013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:50:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
206#
发表于 2010-9-13 17:46 | 只看该作者
支持青云,很不错的工具

使用道具 举报

回复
论坛徽章:
1
 2014年世界杯参赛球队: 德国
日期:2014-06-13 11:30:35
207#
发表于 2010-9-13 23:08 | 只看该作者
支持一下

使用道具 举报

回复
论坛徽章:
0
208#
发表于 2010-9-14 13:06 | 只看该作者
DDDDDDDDDDDDDDDDDDDDDDDDDDDDD

使用道具 举报

回复
论坛徽章:
0
209#
发表于 2010-9-16 14:07 | 只看该作者

可以登录,但是表出不来

可以登录,但是表出不来,提示 ORA-00942:TABLE OR VIEW DOES NOT EXIST ,表是该用户创建的。

使用道具 举报

回复
论坛徽章:
26
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
210#
 楼主| 发表于 2010-9-17 07:14 | 只看该作者
原帖由 扶程星云 于 2010-9-16 14:07 发表
可以登录,但是表出不来,提示 ORA-00942:TABLE OR VIEW DOES NOT EXIST ,表是该用户创建的。


当oracle数据库在安装 catproc.sql 包时出现问题,导致catproc.sql  包安装不完全也会出现此中错误!
解决办法:  sqlplus   sqlplus “/as sysdba” 然后重新执行$ORACLE_HOME/rdbms/admin/catproc.sql 脚本
这样就修复了ora-00942 的错误!



你执行一下:

SELECT A.TABLE_NAME,A.COMMENTS,B.NUM_ROWS,B.AVG_ROW_LEN,
B.BLOCKS,B.BUFFER_POOL,B.CACHE,B.LAST_ANALYZED
FROM SYS.DBA_TAB_COMMENTS A,SYS.DBA_TABLES B
WHERE A.TABLE_NAME=B.TABLE_NAME
AND A.OWNER='xxx' AND B.OWNER='xxx'

我的打开表的sql就是上面这个。

[ 本帖最后由 qingyun 于 2010-9-17 07:21 编辑 ]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表