存储过程

更改用户host留下的坑

荒凉一梦 提交于 2019-12-05 06:56:22
前言: 我们在创建数据库用户的时候都会指定host,即一个完整的用户可描述为 'username'@'host' 。创建用户时不显式指定host则默认为%,%代表所有ip段都可以使用这个用户,我们也可以指定host为某个ip或ip段,这样会仅允许在指定的ip主机使用该数据库用户。不过你也应该明白 'username'@'%' 和 'username'@'192.168.6.%' 是两个毫无关联的用户,这两个用户可以有不同的密码和权限,这里不建议创建多个同名不同host的用户,还有不要轻易更改用户的host,笔者曾经遇到过因为更改用户host引发的故障,下面将其分享出来,为你讲述前因后果。 1.故障模拟 当时为了规范安全,将某个程序用户的host由%改为了应用服务器ip段,过段时间业务反馈某些功能报错,经排查发现是因为无法调用存储过程(大家可以先思考下原因),下面模拟下故障操作。 # 原有用户、表、存储过程模拟创建 mysql> create user 'testuser'@'%' identified by '123456'; Query OK, 0 rows affected (0.04 sec) mysql> grant select,insert,update,delete,execute on `testdb`.* to 'testuser'@'%'; Query OK,

oracle定时执行存储过程

若如初见. 提交于 2019-12-05 06:24:33
一直用 sql server 建作业什么得定时执行还是很ok得 碰到oracle就懵l 真实为难我胖虎了 create or replace procedure MH_POLICEMAN_GPS_INFO_PROC as begin insert into MH_XH_HQ_POLICEMAN_INFO_TEP SELECT DISTINCT STANDARD_CODE, ORG,NAME,IDCARD,POLICENUMBER,POSITION,MOBILE,LAT,LNG, DT from ( SELECT A.*,B.LAT,B.LNG,B.DT,B.GPSID FROM ( SELECT * FROM MH_XH_HQ_POLICEMAN_INFO )A LEFT JOIN ( SELECT * FROM MH_POLICEMAN_GPS_INFO WHERE (GPSIDCARD,GPSTIME) IN( SELECT GPSIDCARD,MAX(GPSTIME) FROM MH_POLICEMAN_GPS_INFO GROUP BY GPSIDCARD) AND DT=to_char(sysdate,'yyyymmdd')) B ON A.IDCARD=B.GPSIDCARD WHERE DT is not NULL) ; commit; end MH

学习streams第一天

别来无恙 提交于 2019-12-05 06:08:24
一.概念 1.oracle streams提供了专一的信息共享解决方案。 2.数据库之间,应用程序之间,应用程序和数据库之间,不同版本的数据库,不同操作系统的数据库,不同的数据库比如DB2,sql server之间进行信息共享。 3.在oracle streams中,最小的信息共享单位被称为消息message,一个消息可以在对数据库的修改中被捕获到,也可以从数据库的事件中产生,包括dml,ddl(比如对表和索引的添加等),但是,某些操作不在共享范围之内,比如增加数据文件,启动一个备份或者卸载一个表空间等。 4.oracle streams可以控制要捕获的消息---信息流,信息流传播的方式,以及信息流到达目标端时的使用或者应用模式。 5.orale streams有众多的应用程序,例如消息队列,数据保护,数据仓库加载,数据复制,我们主要学习数据复制。 6.oraclestreams是oracle database 11g 中一个标准且完整的功能,但是oracle database 11g的标准版把同步捕获作为自动捕获数据库修改的唯一方法,所谓的同步捕获就是在数据发生修改的同时就捕获,而不是在修改完成之后再日志中捕获。 在企业版中,异步捕获支持。 二.oracle streams中的信息流 1.oracle streams中的信息流向 捕获 ------ 暂存和传播 ---------

oracle定时执行存储过程

。_饼干妹妹 提交于 2019-12-05 05:17:44
需求 每小时进行一次查询统计数据,并将数据插入到自定义的表当中 效果 创建存储过程 create or replace procedure summary_data as v_dcppv number; v_jd12h number; v_dby number; v_xby number; v_bj number; v_bn number; v_zdzf number; v_wxzf number; v_jfzf number; v_yhdj number; v_dgzs number; v_tds number; v_tds2 number; begin --单次 select count(1) into v_dcppv from iptvsp_wt_req a where servicecode = 'JK0008' and a.instime between trunc(sysdate, 'hh') - 1 / 24 and trunc(sysdate, 'hh') - 1 / 86400 and orderstatus = 1 and order_type in (0, 1) and order_time IN (48, 30) and a.user_id like '116%'; --酒店 select count(1) into v_jd12h from iptvsp

EFCore批量操作,你真的清楚吗

邮差的信 提交于 2019-12-05 03:44:47
背景 EntityFramework Core有许多新的特性,其中一个重要特性便是批量操作。 批量操作意味着不需要为每次Insert/Update/Delete操作发送单独的命令,而是在一次SQL请求中发送批量组合指令。 EFCore批量操作实践 批处理是期待已久的功能,社区多次提出要求。现在EFCore支持开箱即用确实很棒,可以提高应用程序的性能和速度。 P1 对比实践 下面以常见的批量插入为例,使用SQL Server Profiler 观察实际产生并执行的SQL语句。 // category table中添加了3条记录并执行保存 using (var c= new SampleDBContext()) { c.Categories.Add(new Category() { CategoryID = 1, CategoryName = "Clothing" }); c.Categories.Add(new Category() { CategoryID = 2, CategoryName = "Footwear" }); c.Categories.Add(new Category() { CategoryID = 3, CategoryName = "Accessories" }); c.SaveChanges(); } 当执行SaveChanges(), 从SQL

PLSQL小技巧-使用模板

回眸只為那壹抹淺笑 提交于 2019-12-05 02:38:03
前期准备:PLSQL dev 模板功能:模板功能可以将你平时常用的存储过程,或者函数,保存起来使用的时候点击即可生成。 效果: 就是替换常用的存储过程,提升一定效率 First:点击 模板-》模板 2、找到Constants,也可以自己创建一个 。 右键 -》新模板 或者 新文件夹。(新文件夹是用来管理模板的,你还需要在新文件夹在创建模板) 3、编辑模板中的内容。 来源: CSDN 作者: 李威14 链接: https://blog.csdn.net/qq_40709468/article/details/89176900

MySQL数据库之存储过程

守給你的承諾、 提交于 2019-12-05 02:24:19
存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批件,虽然它们的作用不仅限于批处理。在我看来, 存储过程就是有业务逻辑和流程 的集合, 可以在存储过程中创建表,更新数据, 删除等等。 一个简单的存储过程: create procedure porcedureName () begin select name from user; end; 存储过程用create procedure 创建, 业务逻辑和sql写在begin和end之间。mysql中可用call porcedureName ();来调用过程。 删除存储过程 DROP PROCEDURE IF EXISTS porcedureName; -- 没有括号() 在这里,我们还要了解三个特别的字段in,out以及inout的区别: 1.参数in的使用(代表输入,意思说你的参数要传到存过过程的过程里面去) /** 案例功能:求1-n的和 */ delimiter $ create procedure p1(in n int) begin declare total int default 0; declare num int default 0; while num < n do set num:=num+1; set total:=total+num; end while; select

数据之-存储过程的血缘分析

徘徊边缘 提交于 2019-12-04 23:06:13
1 select base.name AS 存储过程 2 ,‘’ AS 目标表 3 ,'' AS 目标库 4 ,depend.referenced_entity_name as 依赖的存储过程 5 ,depend.referenced_database_name as 依赖的数据库 6 from sys.sql_expression_dependencies_depend 7 inner join sys.objects_base 8 on depend.referencing_id = base.object_id 9 where base.name ='' --存储过程 10 and depend.referenced_entity_name <>''--需要排除掉的表 这个是在工作中针对存储过程做血缘分析的时候使用到的,用的时候还是挺好用的,记录一下 希望后面遇到类似的即可立即投入使用! 来源: https://www.cnblogs.com/cdm023/p/11887153.html

存储过程procedure

不问归期 提交于 2019-12-04 20:50:36
1、创建表 DROP TABLE if exists test ; CREATE TABLE test( id int(11) NULL ); 2、简单存储过程 drop procedure if exists sp; CREATE PROCEDURE sp() select 1 ; call sp(); 3、带输入参数的存储过程 drop procedure if exists sp1 ; create procedure sp1(in p int) comment 'insert into a int value' begin /* 定义一个整形变量 */ declare v1 int; /* 将输入参数的值赋给变量 */ set v1 = p; /* 执行插入操作 */ insert into test(id) values(v1); end ; /* 调用这个存储过程 */ call sp1(1); /* 去数据库查看调用之后的结果 */ select * from test; 4、带输出参数的存储过程 drop procedure if exists sp2 ; create procedure sp2(out p int) /*这里的DETERMINISTIC子句表示输入和输出的值都是确定的,不会再改变.我一同事说目前mysql并没有实现该功能,因此加不加都是NOT

MySQL 帮助类 MySQLHelper

喜欢而已 提交于 2019-12-04 20:03:40
/// <summary> /// MySqlHelper操作类 /// </summary> public sealed partial class MySQLHelper { public static readonly string DBConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings[""].ToString(); /// <summary> /// 批量操作每批次记录数 /// </summary> public static int BatchSize = 2000; /// <summary> /// 超时时间 /// </summary> public static int CommandTimeOut = 600; /// <summary> ///初始化MySqlHelper实例 /// </summary> /// <param name="connectionString">数据库连接字符串</param> public MySQLHelper(string connectionString) { this.ConnectionString = connectionString; } /// <summary> /// 数据库连接字符串 /// <