Oracle 获取表带字段备注SQL语句存储过程
来源:互联网 发布:淘宝新店如何引流 编辑:程序博客网 时间:2024/04/29 17:22
create table Table_SQLResult(tablename varchar2(50), /*表名*/sqlremark varchar2(4000 char), /*SQL语句内容*/createtime date /*创建时间*/)tablespace 当前数据库用户名pctfree 10initrans 1maxtrans 255storage(initial 16next 8minextents 1maxextents unlimited);
create or replace procedure PROC_GetSQLRemark
(
tableName_in varchar2 /*传入表名区分大小*/
/*SQLstr_out out varchar2 --返回带中文注释SQL语句*/
) is
v_sqlresult varchar2(32767); /*SQL内容*/
v_tableNameCount number; /*用来判断是否已经存在相同表*/
v_createTime date; /*默认当前系统时间*/
cursor v_cur is
select distinct column_id, column_name||' as "'|| substr(replace(replace(replace(replace(comments,',',''),'.',''),'、',''),';',''),0,15)||'",' as rowname from ( /*注意Oracle标识符长度不要超过30,中文算2个*/
select b.column_name column_name /*字段名*/
/*,b.data_type data_type --字段类型
,b.data_length --字段长度 */
,NVL(a.comments,b.column_name) comments /*字段注释*/
,b.column_id /*列字段序号ID*/
from user_col_comments a left join
(select distinct table_name,column_name,column_id from all_tab_columns where table_name = tableName_in) b
on a.column_name = b.column_name and a.table_name = b.table_name
where a.table_name = b.table_name and a.table_name = tableName_in /*注意表名区分大小写*/
) order by column_id;
begin
select count(*) into v_tableNameCount from Table_SQLResult where tablename = tableName_in;
if v_tableNameCount > 0 then
return;
end if;
v_createTime := sysdate;
v_sqlresult := 'select ';
for re in v_cur loop
begin
v_createTime := v_createTime + 1/(24*60*60); /* 加1秒钟,以区别SQL语句字节大于4000的SQL先后顺序*/
if(length(re.rowname) <> 0) then
v_sqlresult := v_sqlresult||re.rowname;
if(lengthb(v_sqlresult) > 4000-176) then
insert into Table_SQLResult(tablename,sqlremark,createtime) values(tableName_in,v_sqlresult,v_createTime);
v_sqlresult := '';
end if;
end if;
end;
end loop;
if(lengthb(v_sqlresult) < 4000) then
v_sqlresult := substr(v_sqlresult,0,length(v_sqlresult) - 1)||' from '||tableName_in;
insert into Table_SQLResult(tablename,sqlremark,createtime) values(tableName_in,v_sqlresult,v_createTime);
end if;
commit;
/* sqlresult := substr(sqlresult,0,length(sqlresult) - 1)||' from '||tableName_in;
SQLstr_out := sqlresult;
insert into Table_SQLResult(tablename,sqlremark,createtime) values(tableName_in,v_sqlresult,v_createTime);
commit;*/
end PROC_GetSQLRemark;
- Oracle 获取表带字段备注SQL语句存储过程
- Oracle导出sql语句存储过程
- oracle数据库sql语句10 存储过程
- SQL语句查找含有某个字段的存储过程
- SQL存储过程之获取“,”分隔的字段
- SQL 语句查询表字段信息,及字段备注
- sql server、db2、oracle 存储过程动态sql语句示例
- oracle存储过程语句
- 通过 sql语句获得一个 表的备注 及 字段备注 类型
- SQL 存储过程或语句获取月份简写
- oracle存储过程中如何执行动态SQL语句
- Oracle执行参数化SQL语句和存储过程
- oracle存储过程中如何执行动态SQL语句
- oracle基础---sql语句 ado 存储过程 总结
- Oracle 存储过程 动态SQL 语句 返回结果集
- Oracle中查询有哪些存储过程的sql语句
- Oracle 常用sql语句以及存储过程记录
- Oracle中sql语句查看存储过程内容
- DBA手记:共享池的改进与ORA-04031的变化
- 读书笔记MoreEffectiveC++(35)
- 安卓开发模拟工具intel HAXM安装报错问题解决
- 图像拼接 Image-based only, no GPS/IMU data
- 实现<table>标签的动态新增和后台接受<table>标签的方法
- Oracle 获取表带字段备注SQL语句存储过程
- 【HDU2126】【Buy the souvenirs】
- HDU 5317
- 杭电2199Can you solve this equation?(初试二分法)
- [BZOJ3673]可持久化并查集
- Mysql实现自增长编号,日期+序列,序列定时归零
- BestCoder 1st Anniversary ——HDU5312(数学推导)
- 上传图片方向角度问题
- 存储设备类型图