java通过SQL获取几大关系型数据库的系统参数及存储过程

记录一次 各大关系型数据库 查询配置参数和 存储过程及sql定义语句查询

经验尚欠,不全面,纯个人记录。如有错误请指正。

MYSQL
//查询mysql数据库的参数配置
 String sql= "show variables like  '"+confName+"'";
 
 //查询mysql数据库中的存储过程 函数
 (filterSchemas为过滤掉系统表的  查询条件)
String sql="SELECT t.SPECIFIC_NAME,t.ROUTINE_DEFINITION FROM information_schema.ROUTINES t where t.ROUTINE_TYPE like '"+type+"' and t.ROUTINE_SCHEMA not in  ("+filterSchemas+")";

type 为查询条件 存储过程PROCEDURE 函数FUNCTION

ORACLE
//查询oracle数据库的参数配置
  String sql= "SELECT name, value FROM gv$parameter where name like  '"+confName+"'";

 //查询oracle数据库中的存储过程 函数
// String sql="select  T.NAME ,replace(wm_concat(t.TEXT),',','')TEXT from ALL_SOURCE T WHERE  T.TYPE='"+type+"' and T.OWNER NOT IN("+filterSchemas+")  GROUP BY T.NAME";

由于oracle查询存储过程 你会发现 它换行一次就存一条记录 因此可以分组行转列拼接 返回
这里过滤掉了系统自带的模式,否则执行sql语句 会出现 字符缓存不够的异常。
因为oracle系统数据太多了
type 为查询条件 存储过程PROCEDURE 函数FUNCTION

PostgreSQL
//查询PostgreSQL数据库的参数配置
  String sql= "SELECT name,setting FROM pg_settings where name like  '"+confName+"'";

//PostgreSQL  
  String sql="select  pg_proc.proname, pg_proc.prosrc  from pg_proc ";

不区分存储过和函数

SQLServer
//查询sqlServer的参数配置
String sql= "SELECT CONVERT(varchar(200), name)name,CONVERT(varchar(200), value)value FROM sys.configurations where name like  '"+confName+"'";

//查询存储过程 函数
" use "+db+"  select a.name,b.[definition] from sys.all_objects a,sys.sql_modules b where a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in ("+type+")";

这里有个坑 java jdbc操作时候 记得当时报错 大意是类型不匹配什么的问题,需要用CONVERT函数转换一下来接收。
另外 use db 需要制定用哪个数据库 db :数据库名
(可以通过 Select Name FROM Master…SysDatabases 获取所有数据库名)
type 为查询条件 存储过程P 函数分两种 type="‘FN’,‘IF’";

DB2
暂时通过SQL查询配置的语句  目前知识并不知道

//查询存储过程和函数
  String sql=" SELECT ROUTINENAME,TEXT from sysibm.sysroutines WHERE ROUTINETYPE='"+ type.substring(0,1)+"'";()

type 为查询条件 存储过程PROCEDURE 函数FUNCTION

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值