存储过程

C#操作SQL Server通用类

…衆ロ難τιáo~ 提交于 2020-01-30 10:08:17
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Collections; using System.Data.SqlClient; /// <summary> /// 数据库的通用访问代码 /// 此类为抽象类,不允许实例化,在应用时直接调用即可 /// </summary> public abstract class SqlHelper { //获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改 public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings[ "pubsConnectionString" ].ConnectionString; // 哈希表用来存储缓存的参数信息,哈希表可以存储任意类型的参数。 private static Hashtable parmCache = Hashtable.Synchronized( new Hashtable()); /// <summary> //

Mysql高级三 之 存储过程&函数

自闭症网瘾萝莉.ら 提交于 2020-01-29 20:33:11
Mysql高级三 之 存储过程和函数 1.存储过程和函数 1.1存储过程和函数概述 存储过程和函数是 事先经过编译并存储在数据库中的一段SQL语句的集合.调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务之间的传输,对于提高数据处理的效率是有好处的. 存储过程和函数的区别在于函数必须有返回值而存储过程没有. 函数:是一个返回值的过程 过程:是一个没有返回值的函数 1.2创建存储过程 CREATE PROCEDURE procedure_name ( [ proc_parameeter [ . . . ] ] ) begin -- SQL语句 end ; 示例: delimiter $ create procedure pro_test ( ) begin select 'Hello MySQL' ; end $ delimiter ; 结果: delimiter: 该关键字用来声明SQL语句的分隔符,告诉MySQL解释器,该段命令是否已经结束了,Mysql是否可以执行了. 默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,MySQL将会执行该命令. 1.3调用存储过程 CALL pro_test ; 结果: 1.4查看存储过程 -- 查看db_name数据库中的所有存储过程(这个存储在mysql 数据库下的

mysql存储过程实战

≯℡__Kan透↙ 提交于 2020-01-29 11:30:44
今天科比离去,今天肺炎病毒持续肆虐。。。 意识到生命的脆弱,今天我继续前行,比以往更加坚定和紧迫,这辈子不活好自己就算白来一趟。 最近需要用到mysql存储过程去处理一些表数据,然后利用java poi导出excel数据。 既然用了那就总结一下用到的知识点: 1.声明变量 declare 2.参数 in/out 参数名 数据类型 3.查询赋值 select into 和oracle相似。 4.结果集循环 声明游标,然后打开赋值循环,再赋值。 5.case..when语句 可以直接case 6.条件控制语句 if .. then else end if; 7.循环语句 对比oracle for循环,使用while 8.mybatis如何调用? <select id="updateWorkDt" parameterType="map" useCache="false" statementType="CALLABLE"> <![CDATA[ call proc_update_work_dt(#{year,mode=IN,jdbcType=VARCHAR},#{month,mode=IN,jdbcType=VARCHAR}); ]]> </select> 有不懂得直接看我的存储过程(省略了部分) : DROP PROCEDURE IF EXISTS `proc_update_work_dt

MySQL语法拾遗-存储程序

佐手、 提交于 2020-01-29 06:23:36
title: mysql语法拾遗-存储程序 date: 2019-11-11 12:23:49 categories: MySQL MySQL语法相关 tags: MySQL 语法指南 description: MySQL中的存储程序介绍(存储例程,触发器,事件) MySQL中的存储程序 自定义变量与语句结束符 自定义变量 set 使用 set 语句,自定义变量,变量名前要加’@'符号。可以将常量,某一搜索结果值,赋值给变量 -- 将1赋值给变量a set @a = 1 -- 将搜索结果赋值给多个变量 SELECT m1 , n1 FROM t1 LIMIT 1 INTO @a , @b -- 查看变量 select @a 语句结束符 delimiter delimiter 设置语句的语句结束分隔符,默认为’;’ delimiter $ SELECT * FROM t1 LIMIT 1 ; SELECT * FROM t2 LIMIT 1 ; SELECT * FROM t3 LIMIT 1 ; $ 存储函数与存储过程 存储函数 将MySQL语句封装到某一函数中。 创建存储函数 语句形式 : CREATE FUNCTION 函数名 ( ` [ 参数列表 ] ` ) RETURNS 返回值类型 BEGIN 函数体(以 ';' 分隔语句) END e.g. delimiter $

索引、视图、存储过程和触发器的应用

送分小仙女□ 提交于 2020-01-29 04:24:32
实验案例一:验证索引的作用 1、首先创建一个数据量大的表,名称为“学生表”,分别有三列,学号,姓名和班级,如下图所示,学号为自动编号,班级为默认值“一班”。 2、向表中插入大量数据,数据越多,验证索引的效果越好。 使用语句完成:While 1>0 Insert into 学生表(姓名) values(‘于美丽’) 上面语句是一个死循环,除非强制结束,如果1大于0就会一直向表中插入姓名 如下图所示: 等待5分钟左右,打开表的属性,查看表的行数,当前为1032363,如下图所示: 3、 使用语句查询第900000行的数据,Select * from 学生表 Where 学号=900000 4、打开“sql server profiler ”工具进行跟踪,如下图所示: 打开“sql server profiler ”工具查看跟踪的信息,发现查询时间很长,cpu工作了265毫秒,reads:读了8649次,writes:写了10次,duration:总计花费2336毫秒完成查询。 为了下面分析文件更准确,多执行几次Select* from 学生表 Where 学号=900000 然后把跟踪的结果保存在桌面上: 5、打开“数据库引擎优化顾问”,添加跟踪文件,进行分析,发现索引建议,需要建立索引。 注意选择benet数据库中的学生表,然后点击“开始分析” 索引类型为clusterd(聚集索引)

SqlServer存储过程数据库转移

99封情书 提交于 2020-01-29 03:17:34
SqlServer存储过程数据库转移。 打开SSMS,按F7,右边出现对象资源管理器详细信息。 全选存储过程,右键,创建脚本即可。 这时会有一个查询窗口,是SSMS帮你写好的 ,把目标数据库改一下。 有任何问题留言或者加我微信我们一起探讨下 VX:zgqxiangai 来源: CSDN 作者: zhanggq129225 链接: https://blog.csdn.net/zhanggq129225/article/details/103992944

java调用存储过程

人盡茶涼 提交于 2020-01-28 13:32:11
这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励。 一:无返回值的存储过程 存储过程为: CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS BEGIN INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2); END TESTA; 然后呢,在java里调用时就用下面的代码: package com.hyq.src; import java.sql.*; import java.sql.ResultSet; public class TestProcedureOne { public TestProcedureOne() { } public static void main(String[] args ){ String driver = "oracle.jdbc.driver.OracleDriver"; String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq "; Statement stmt = null; ResultSet rs = null;

分页存储过程

杀马特。学长 韩版系。学妹 提交于 2020-01-27 04:30:40
原文: http://www.cnblogs.com/sealzrt/archive/2009/07/20/1527225.html --====分页存储过程===------- if exists(select * from sysobjects where type='p' and name='Proc_GetPagingList') begin drop procedure Proc_GetPagingList end GO Create Procedure Proc_GetPagingList ( @Table nvarchar(1000),----------------表名 @Field nvarchar(1000) = '*',----------字段 @Where nvarchar(500) = NULL,---------Where条件 不用加 where @OrderBy nvarchar(500)= NULL,---------排序字段 不用加 order by @PrimaryKeyField nvarchar(50),--------主键 不能为空 @PageNumber int = 1,------------------当前页 @PageSize int = 10 -------------------每页显示的记录数 ) AS BEGIN

mysql脚本实现循环插入

血红的双手。 提交于 2020-01-27 01:26:17
定义存储过程 DELIMITER $$ --数据库名称 USE ` zycrm ` $$ --删除旧的存储过程 DROP PROCEDURE IF EXISTS ` u_head ` $$ --定义新的存储过程 CREATE PROCEDURE ` u_head ` ( IN param_num INTEGER ) BEGIN -- 该变量用于标识是否还有数据需遍历 DECLARE flag INT DEFAULT 0 ; -- 创建一个变量用来存储遍历过程中的值 DECLARE id BIGINT ( 40 ) ; -- 查询出需要遍历的数据集合 DECLARE idList CURSOR FOR ( SELECT id FROM ws_shop WHERE id < param_num ) ; -- 查询是否有下一个数据,没有将标识设为1,相当于hasNext DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1 ; -- 打开游标 OPEN idList ; -- 取值设置到临时变量中 FETCH idList INTO id ; -- 遍历未结束就一直执行 WHILE flag != 1 DO -- targetSQL //你想要执行的目标功能,这里可以写多个SQL -- 注意 -- 这里有一个坑,目标语句引用临时变量

oracle PLSQL、游标、存储过程、触发器

僤鯓⒐⒋嵵緔 提交于 2020-01-27 00:51:21
文章主目录 PL/SQL 游标 存储过程 触发器 回到顶部 PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言 , PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言。我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的, 是带有了分支和循环的语言 。 PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00; v_date date := sysdate; v_pi constant number(3,2) := 3.14; v_valid boolean := false; v_name varchar2(20) not null := 'myname'; declare开头声明变量,v_name表示变量名字,通常以v_xxx这种格式命名变量,varchar2(20)表示变量类型, :=为赋值操作符 。 在 PL/SQL里面boolean类型变量在定义的时候一定要给初始值,Oracle 里面的put_line()不能打印boolean类型的值。 %type 属性声明 还有一种声明变量的方法:使用 %type属性。 declare