存储过程

mysql存储过程笔记

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-31 14:18:42
存储过程是一组完成特定功能的sql语句集合,已经被编译好,可以直接拿来被执行,可以传参 参数有三种类型,in ,out ,inout 。 in类型的参数,可以在存储过程的方法体里面被调用,但是无法影响外部 out类型的参数,无法被内部调用,存储过程出来的结果可以影响外部 inout类型的参数,可以被接收调用,出来的结果可以影响外部 存储过程的意义 1.存储过程只编译一次,提高了数据库执行效率 2.当对数据库有复杂操作时,比如对多个表进行增删改查,这些操作如果用程序来完成,就是一条条的sql语句,需要多次连接数据库,而换成存储过程,只需一次 3.存储过程可以重复使用,节省开发时间 一个存储过程的例子 mysql> delimiter $$  #将语句的结束符号从分号;临时改为两个$$(可以是自定义) mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER) -> BEGIN ->   DELETE FROM MATCHES -> WHERE playerno = p_playerno; -> END$$ Query OK, 0 rows affected (0.01 sec) mysql> delimiter;  #将语句的结束符号恢复为分号 有的时候,存储过程需要自定义参数 参数定义方式示例 DECLARE l

系统存储过程sp_MSforeachtable和sp_MSforeachdb使用说明

两盒软妹~` 提交于 2020-03-30 04:13:25
1.简介: 作为DBA会经常需要检查所有的数据库或用户表,比如:检查所有数据库的容量;看看指定数据库所有用户表的容量,所有表的记录数...,我们一般处理这样的问题都是用游标分别处理处理,比如:在数据库检索效率非常慢时,我们想检查数据库所有的用户表,我们就必须通过写游标来达到要求;如果我们用sp_MSforeachtable就可以非常方便的达到相同的目的: EXEC sp_MSforeachtable @command1="print '?' DBCC CHECKTABLE ('?')" 系统存储过程sp_MSforeachtable和sp_MSforeachdb,是微软提供的两个不公开的存储过程,从mssql6.5开始。存放在SQL Server的MASTER数据库中。可以用来对某个数据库的所有表或某个SQL服务器上的所有数据库进行管理,后面将对此进行详细介绍。 2.参数说明: @command1 nvarchar(2000), --第一条运行的SQL指令 @replacechar nchar(1) = N'?', --指定的占位符号 @command2 nvarchar(2000)= null, --第二条运行的SQL指令 @command3 nvarchar(2000)= null, --第三条运行的SQL指令 @whereand nvarchar(2000)= null, -

数据库原理及操作

不羁岁月 提交于 2020-03-29 17:34:06
数据库基础 传统的文件系统管理的缺陷 编写应用程序不方便; 数据冗余不可避免; 应用程序依赖性; 不支持对文件的并发访问; 数据间联系弱 难以按用户视图表示数据; 无阶段性安全控制功能。 数据库管理系统的优点 相互关联的数据的集合; 较少的数据冗余; 程序与数据相互独立; 保证数据的安全、可靠; 最大限度地保证数据的正确性; 数据可以并发使用并能同时保证一致性。 数据库管理系统 数据库是数据的汇集,它以一定的组织形式存在于存储介质上 DBMS是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心 DBA: 负责数据库的规划、设计、协调、维护和管理等工作 应用程序指以数据库为基础的应用程序; 关系型数据Key/Value 数据库 关系:关系就是二维表。并满足如下性质: 表中的行、列次序并不在重要 行row:表中的每一行,又称为一条记录(record) 列column:表中的没一列,称为属性,字段 主键(Primary key):用于唯一确定一个记录的字段 域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值 外键(Foreign key):用于表之间的一对多的关系 唯一键(Uniq key):可以为null, 非关系型数据库:NO SQL(not only SQL) mencached redis mogoDB RDBMS MySQL: MySQL,

分页存储过程 带输出参数

半城伤御伤魂 提交于 2020-03-29 05:44:34
-- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <分页存储过程> -- ============================================= ALTER PROCEDURE [dbo].[Pro_pagination] ( @SQL VARCHAR(1000), --不带排序语句的SQL语句或表名 @Page int, --页码 @RecsPerPage int, --每页容纳的记录数 @ID VARCHAR(255), --需要排序的不重复的ID号 @Sort VARCHAR(255), --排序字段及规则 @RowCount int output, --总行数(传出参数) @PageCount int output --总页数(传出参数) ) AS begin DECLARE @Str VARCHAR(1000) --执行页数和行数给 @RowCount @PageCount 赋值 select @PageCount=COUNT(*),@RowCount=CEILING((COUNT(*)+0.0)/@RecsPerPage) from ST_news

C#调用Oracle存储过程分页

余生颓废 提交于 2020-03-29 05:43:14
  直接调用Oracle中的存储过程完成对表的分页,对代码封闭程度高,执行高效.以下为C#分页类代码,包括Oracle数据库端存储过程PLSQL代码. // 程序调用示例: // int totalrows = 0; //总记录数 // int totalpages = 0; //总页数 // string tableName ="emp"; //Oracle表名 // int pagesize =5; //每页记录数 // int indexnowpage =2; //当前页码 // String strConnection = "DataSource =db1;User ID =LuGang; Password="GIS""; //连接字符串 // OracleConnection pOrclConnection = new OracleConnection(strConnection); // Pagination pPagintion = new Pagination("sp_cur2", pOrclConnection); //sp_cur2为储存过程名称 // DataTable datatable = pPagintion.Paging(tablename, pagesize, indexnowpage, ref totalrows, ref totalpages);

SQL学习笔记

独自空忆成欢 提交于 2020-03-28 04:16:35
SQL 学习笔记 创建数据库 /*- 创建文件夹 project-*/ : exec xp_cmdshell 'mkdir D:\project' --D:\project 为路径 /*- 创建数据库 -*/ : use master go -- 查找数据库: if exists(select * from sysdatabases where name = ' 数据库名 ') -- 删除数据库: drop database 数据库名 go -- 创建数据库: create database 数据库名 on primary -- 可选 ( name = ' 数据库名 _data', -- 逻辑名 filename = 'D:\project\ 数据库名 _data.mdf', -- 物理名 size = 大小 mb, -- 大小 maxsize = 大小 mb, -- 最大容量 filegrowth = 1 -- 增长率 _ 按 1mb 增长 , 当等于 0 时表示不增长 ) log on -- 可选 ( name = ' 数据库名 _log', -- 逻辑名 filename = 'D:\project\ 数据库名 _log.ldf', -- 物理名 size = 大小 mb, -- 大小 maxsize = 大小 mb, -- 最大容量 filegrowth = 1% --

数据库操作公共类总结

巧了我就是萌 提交于 2020-03-27 04:12:28
1、打开数据库链接 /**/ /// <summary> /// 打开数据库连接. /// </summary> private void Open() { // 打开数据库连接 if (con == null ) { con = new SqlConnection(WebConfigurationManager.AppSettings[ " ConnectionString " ]); // con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); } if (con.State == System.Data.ConnectionState.Closed) { try { con.Open(); } catch (Exception ex) { } } } 2、关闭数据库连接 /**/ /// <summary> /// 关闭数据库连接 /// </summary> public void Close() { if (con != null ) con.Close(); } 3、执行存储过程 /**/ /// <summary> /// 执行存储过程 /// </summary> /// <param name="procName"> 存储过程的名称 </param> ///

C#写的数据库访问类(只针对SQLSERVER)

a 夏天 提交于 2020-03-27 04:05:58
这个类使用的是存储过程方式,可以提高一些运行效率 目前还在写用于OLEDB的数据访问类 using System; using System.ComponentModel; using System.Collections; using System.Diagnostics; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace MI.Components { /// <summary> /// Database 的摘要说明。 /// </summary> public class Database : IDisposable { // 连接数据源 private SqlConnection con; public Database() { } /// <summary> /// 执行存储过程 /// </summary> /// <param name="procName">存储过程的名称</param> /// <returns>返回存储过程返回值</returns> public int RunProc(string procName) { //SqlTransaction tran; SqlCommand cmd = CreateCommand

C# 基于MySQL的数据层基类(MySQLHelper)

有些话、适合烂在心里 提交于 2020-03-27 03:17:24
注意驱动选择MySql提供的官方驱动Connector/Net。数据库连接字符串类似这样:<add name="DBConnectString" connectionString="Server=192.168.1.2;Database=dbname;Uid=root;Pwd=111;charset=utf8" providerName="MySql.Data.MySqlClient"/> 以下是具体代码: using System; using System.Da ta; using MySql.Da ta; using MySql.Da ta.MySqlClient; namespace DBUtility { /// <summary> /// 基于MySQL的数据层基类 /// </summary> /// <remarks> /// 参考于MS Petshop 4.0 /// </remarks> public abstract class MySqlHelper { #region 数据库连接字符串 public static readonly string DBConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"]

分页存储过程(两个)

一个人想着一个人 提交于 2020-03-25 14:06:27
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER Procedure [ dbo ] . [ Proc_splitPage ] @TableName varchar ( 50 ), -- 表名 @Fields varchar ( 5000 ) = ' * ' , -- 字段名(全部字段为*) @OrderField varchar ( 5000 ), -- 排序字段(必须!支持多字段) @sqlWhere varchar ( 5000 ) = Null , -- 条件语句(不用加where) @pageSize int , -- 每页多少条记录 @pageIndex int = 1 , -- 指定当前为第几页 @TotalPage int output -- 返回总页数 as begin Begin Tran -- 开始事务 Declare @sql nvarchar ( 4000 ); Declare @totalRecord int ; -- 计算总记录数 if ( @SqlWhere = '' or @sqlWhere = NULL ) set @sql = ' select @totalRecord = count(*) from ' + @TableName else set @sql = ' select