|
非常感谢楼上朋友的建议;
其实,这个只能算新版本的bata版,这两天正在加紧完善,如今,SQL这块功能,我基本暂时满意,其他的模块基本都要扩展;
用于判断版本升级的文件:
http://www.daizhicun.com/dmx/dai/qingyunOracle.txt
仍是2.754,所以旧版本不会自动提示升级;
因为2.755要加不少功能。所以还没有完成预期的;昨天下班前,我把半拉子版本传上去了,没想到你居然下载用了。
你说的:
“第三个问题: 能否把菜单中的“对象”也做成如上SQL的样式,加入选项,可以选择“表、视图、全部”,,,,这样的分类,应该比较科学,更符合操作,操作起来也更便捷,,,,
未加选项的“对象”菜单:”
--这个我再考虑考虑,毕竟大部分3方工具都是把表,视图,过程,触发器等等放在一个菜单的,通过树形结构检索;
但是如果用树把所有的对象放在一起,那么就没法把备注等各个对象不同的东西一起显示,只能显示对象名;
当初分开,我是考虑各个对象都有其不同的特征,分开方便对其功能做细化工作;这个我再考虑一下,怎么让他们很好的权衡一下;
而且,当时我做的时候,也同时做一款类似的sqlserver工具,sqlserver的表有备注,视图居然没有备注,这也是我当时考虑把表和视图分开考虑,便于个性化实施各种功能的一个原因;
“第四问题: 还有个细节就是: 首字母快速检索表,,,我第一个试了试,,,感觉检索方法应该有点问题吧,怎么检索某一个表的速度比v2.75版本慢很多,本次的v2.755版本的检索好像边检索表的同时再浏览表“数据”,拖慢了表的检索。。。”
--这个是因为每次检索表,对应的字段列表查询跟着动;以前的版本我是通过修改控件避免了这个;这次控件升级后,对这个修改漏掉了,这个我尽快补上;
看了您的截图,感觉系统挺大的,好像是政府机关的某个系统;
不过表名都很怪怪的,不能看出其意思,而且有的有备注,有的没有;
而且字段几乎就没有备注;感觉您这个系统好像是一个通用的产品,一般产品开发的表名都是没有意义的;
我其实大部分精力也在做前端开发,对字段的备注非常看重;对Oracle也只是对PL/sql比较了解,在oracle上管理系统结构上不是很专业;
所以现在也是边完善oralce管理知识,边把它们在我的工具里体现出来;
我常对开发组的成员说,无论表还是视图,字段必须有备注;而且,我的前端程序显示的字段中文,就是直接取的字段备注;
为了方便的给字段设置备注,我还写了一个过程:
/**********************************/
-- 作者 : daizhicun
-- 创建日期 : 2006-6-11 15:58:58
-- 目的 : 系统参数设置
/**********************************/
--功能点: 对表或视图中的字段的备注为空的情况,用已有的同字段名赋值
CREATE OR REPLACE PROCEDURE SET_COMMENTS IS
tmp_val VARCHAR2(2000);
BEGIN
--先是表与表之间备注互相设置
FOR rec IN (SELECT a.table_name, a.column_name, b.comments
FROM (SELECT a.table_name, a.column_name, a.comments
FROM user_col_comments a
JOIN USER_TABLES b ON a.table_name = b.table_name) a
JOIN (SELECT *
FROM (SELECT column_name,
comments,
ROW_NUMBER() OVER(PARTITION BY column_name ORDER BY comments DESC) rn
FROM (SELECT a.table_name,
a.column_name,
a.comments
FROM user_col_comments a
JOIN USER_TABLES b ON a.table_name =
b.table_name) b
WHERE comments IS NOT NULL)
WHERE rn = 1) b ON a.column_name = b.column_name
WHERE a.comments IS NULL)
LOOP
--执行 赋备注 的脚本;
tmp_val := 'COMMENT ON COLUMN ' || rec.table_name || '.' ||
rec.column_name || ' IS ''' || rec.comments || '''';
BEGIN
EXECUTE IMMEDIATE tmp_val;
DBMS_OUTPUT.put_line(tmp_val);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Error: ' || tmp_val || '!');
END;
END LOOP;
--再是视图与视图之间备注互相设置
FOR rec IN (SELECT a.table_name, a.column_name, b.comments
FROM (SELECT a.table_name, a.column_name, a.comments
FROM user_col_comments a
JOIN USER_VIEWS b ON a.table_name = b.View_Name) a
JOIN (SELECT *
FROM (SELECT column_name,
comments,
ROW_NUMBER() OVER(PARTITION BY column_name ORDER BY comments DESC) rn
FROM (SELECT a.table_name,
a.column_name,
a.comments
FROM user_col_comments a
JOIN USER_VIEWS b ON a.table_name =
b.View_Name) b
WHERE comments IS NOT NULL)
WHERE rn = 1) b ON a.column_name = b.column_name
WHERE a.comments IS NULL)
LOOP
--执行 赋备注 的脚本;
tmp_val := 'COMMENT ON COLUMN ' || rec.table_name || '.' ||
rec.column_name || ' IS ''' || rec.comments || '''';
BEGIN
EXECUTE IMMEDIATE tmp_val;
DBMS_OUTPUT.put_line(tmp_val);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Error: ' || tmp_val || '!');
END;
END LOOP;
--最后是表和视图之间备注互相设置
FOR rec IN (SELECT a.table_name, a.column_name, b.comments
FROM user_col_comments a
JOIN (SELECT *
FROM (SELECT column_name,
comments,
ROW_NUMBER() OVER(PARTITION BY column_name ORDER BY comments DESC) rn
FROM user_col_comments b
WHERE comments IS NOT NULL)
WHERE rn = 1) b ON a.column_name = b.column_name
WHERE a.comments IS NULL)
LOOP
--执行 赋备注 的脚本;
tmp_val := 'COMMENT ON COLUMN ' || rec.table_name || '.' ||
rec.column_name || ' IS ''' || rec.comments || '''';
BEGIN
EXECUTE IMMEDIATE tmp_val;
DBMS_OUTPUT.put_line(tmp_val);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Error: ' || tmp_val || '!');
END;
END LOOP;
END SET_COMMENTS;
当然,未必相同的字段名,中文意义就一样,但大部分时候是一样的,个别不一样的再手工调整;
还有,我们在建立表的时候,同样的字段名意义最好唯一,这样方便开发人员;
当然,有的人喜欢通过文档来表达字段的意义;不过我觉得还是最好能在数据库里直接体现;因为文档检索不够方便,而且有时候不能及时同步;不能保证任何时候,都人手一份;
因为考虑到SQL是大家使用频率最高的,所以这块是我重点完善的;
有一个功能,我也是想和大家探讨的;
比如:
select * from table1
执行结果的字段名全是一般都是英文的,我打算把该执行结果的字段名用中文备注代替;
可以通过SQL:比如 select no as 编号,name as 姓名 .... from table1;
不过我觉得这个方法不好,这样查询的结果,是不能修改的,因为修改时,系统产生的SQL是 update table set 编号=... 这样可能报错;
我是这样构思的,如果想显示的结果用中文备注代替;就用:
selec * from table1
--[table1]
我在解析的时候,自动把table1的数据字典的字段备注取出来,在GRid上替换掉;
![]()
[ 本帖最后由 qingyun 于 2009-12-15 14:03 编辑 ] |
|