# 建表 塗聚文 20160907
drop table attendrecord; create table attendrecord
(
seq INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
emp_no varchar(20) null,
rdate datetime not null,
rtime time not null,
rdescription varchar(100),
rdes_reasnon varchar(100),
branch varchar(50)
);
#存储过程
# 添加
DELIMITER $$
DROP PROCEDURE IF EXISTS `attend`.`proc_Insert_Attendrecord` $$
CREATE PROCEDURE `attend`.`proc_Insert_Attendrecord`
(
IN param1emp_no VarChar(20),
IN param1rdate Datetime ,
IN param1rtime Time,
IN param1rdescription VarChar(100),
IN param1rdes_reasnon VarChar(100),
IN param1branch VarChar(50)
)
BEGIN
INSERT INTO attendrecord
(
emp_no ,
rdate ,
rtime ,
rdescription ,
rdes_reasnon ,
branch
)
VALUES
(
param1emp_no ,
param1rdate ,
param1rtime ,
param1rdescription ,
param1rdes_reasnon ,
param1branch
); END $$
DELIMITER ; -- 添加
DELIMITER $$
DROP PROCEDURE IF EXISTS proc_Insert_Attendrecord $$
CREATE PROCEDURE proc_Insert_Attendrecord
(
IN param1emp_no VarChar(20),
IN param1rdate Datetime ,
IN param1rtime Time,
IN param1rdescription VarChar(100),
IN param1rdes_reasnon VarChar(100),
IN param1branch VarChar(50)
)
BEGIN
INSERT INTO attendrecord
(
emp_no ,
rdate ,
rtime ,
rdescription ,
rdes_reasnon ,
branch
)
VALUES
(
param1emp_no ,
param1rdate ,
param1rtime ,
param1rdescription ,
param1rdes_reasnon ,
param1branch
); END $$
DELIMITER ; #添加
DELIMITER $$
DROP PROCEDURE IF EXISTS proc_Insert_AttendrecordOutput $$
CREATE PROCEDURE proc_Insert_AttendrecordOutput
(
IN param1emp_no VarChar(20),
IN param1rdate Datetime,
IN param1rtime Time,
IN param1rdescription VarChar(100),
IN param1rdes_reasnon VarChar(100),
IN param1branch VarChar(50),
out param1seq int
)
BEGIN
INSERT INTO attendrecord
(
emp_no ,
rdate ,
rtime ,
rdescription ,
rdes_reasnon ,
branch
)
VALUES
(
param1emp_no ,
param1rdate ,
param1rtime ,
param1rdescription ,
param1rdes_reasnon ,
param1branch
);
SELECT LAST_INSERT_ID() into param1seq;
END $$
DELIMITER ;

  

/// <summary>
/// Attendrecord数据访问层
///生成時間2016-9-6 17:24:08
///塗聚文(Geovin Du) 自建代码生成器生成(简单存储过程也可以生成)
///</summary>
public class AttendrecordDAL : IAttendrecord
{
///<summary>
/// 追加记录 存储过程
///</summary>
///<param name="AttendrecordInfo"></param>
///<returns></returns>
public int InsertAttendrecord(AttendrecordInfo attendrecord)
{
int ret = 0;
try
{
MySqlParameter[] par = new MySqlParameter[]{
new MySqlParameter("?param1emp_no",MySqlDbType.VarChar,20),
new MySqlParameter("?param1rdate",MySqlDbType.Datetime),
new MySqlParameter("?param1rtime",MySqlDbType.String), //涂聚文注:不能用MySqlDbType.Time否则报错:base {System.Data.Common.DbException} = {"Only TimeSpan objects can be serialized by MySqlTimeSpan"}
new MySqlParameter("?param1rdescription",MySqlDbType.VarChar,100),
new MySqlParameter("?param1rdes_reasnon",MySqlDbType.VarChar,100),
new MySqlParameter("?param1branch",MySqlDbType.VarChar,50),
};
par[0].Value = attendrecord.Emp_no;
par[1].Value = attendrecord.Rdate;
par[2].Value = attendrecord.Rtime;
par[3].Value = attendrecord.Rdescription;
par[4].Value = attendrecord.Rdes_reasnon;
par[5].Value = attendrecord.Branch;
ret = DBHelper.ExecuteSql("proc_Insert_Attendrecord", CommandType.StoredProcedure, par);
}
catch (MySqlException ex)
{
throw ex;
}
return ret;
}
///<summary>
/// 追加记录 SQL脚本
///</summary>
///<param name="AttendrecordInfo"></param>
///<returns></returns>
public int InsertSqlAttendrecord(AttendrecordInfo attendrecord)
{
int ret = 0;
try
{
StringBuilder strSql = new StringBuilder();
strSql.Append("INSERT INTO attendrecord(emp_no,rdate,rtime,rdescription,rdes_reasnon,branch");
strSql.Append(") VALUES (");
strSql.Append("?param1emp_no ,?param1rdate ,?param1rtime ,?param1rdescription ,?param1rdes_reasnon ,?param1branch)");
MySqlParameter[] par = new MySqlParameter[]{
new MySqlParameter("?param1emp_no",MySqlDbType.VarChar,20),
new MySqlParameter("?param1rdate",MySqlDbType.Datetime),
new MySqlParameter("?param1rtime",MySqlDbType.String),
new MySqlParameter("?param1rdescription",MySqlDbType.VarChar,100),
new MySqlParameter("?param1rdes_reasnon",MySqlDbType.VarChar,100),
new MySqlParameter("?param1branch",MySqlDbType.VarChar,50),
};
par[0].Value = attendrecord.Emp_no;
par[1].Value = attendrecord.Rdate;
par[2].Value = attendrecord.Rtime;
par[3].Value = attendrecord.Rdescription;
par[4].Value = attendrecord.Rdes_reasnon;
par[5].Value = attendrecord.Branch;
ret = DBHelper.ExecuteSql(strSql.ToString(), CommandType.Text, par);
}
catch (MySqlException ex)
{
throw ex;
}
return ret;
}

  类似于SQL Server中的:sp_executesql

sql server script:

IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'proc_Select_DuDeptUserCount')
DROP PROCEDURE proc_Select_DuDeptUserCount
GO
CREATE PROCEDURE proc_Select_DuDeptUserCount
(
@where NVARCHAR(1000)
)
AS
DECLARE @sql NVARCHAR(4000)
SET @sql='select count(*) as H from DuDeptUser '
IF @where<>''
SET @sql=@sql+@where
EXEC(@sql)
GO

  MySql script:

#表有多少条记录 Geovin Du
DELIMITER $$
DROP PROCEDURE IF EXISTS proc_Select_AttendrecordCount $$
CREATE PROCEDURE proc_Select_AttendrecordCount
(
IN wherestr varchar(1000)
)
BEGIN
declare sqlstr varchar(2000);
set sqlstr='SELECT count(1) as H FROM attendrecord';
if wherestr='' then
set sqlstr=sqlstr;
else
set sqlstr=sqlstr+wherestr;
end if;
set @sqlstr=sqlstr;
-- call(sqlstr);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
# 测试
call proc_Select_AttendrecordCount('');

  

#视图有多少条记录 涂聚文
DELIMITER $$
DROP PROCEDURE IF EXISTS proc_Select_AttendrecordCountView $$
CREATE PROCEDURE proc_Select_AttendrecordCountView
(
IN wherestr varchar(1000)
)
BEGIN
declare sqlstr varchar(2000);
set sqlstr='SELECT count(1) as H FROM View_attendrecord';
if wherestr='' then
set sqlstr=sqlstr;
else
set sqlstr=sqlstr+wherestr;
end if;
set @sqlstr=sqlstr;
-- call(sqlstr);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ; #查询某记录的字段艺工作者Geovin Du
DELIMITER $$
DROP PROCEDURE IF EXISTS proc_Select_AttendrecordTitle $$
CREATE PROCEDURE proc_Select_AttendrecordTitle
( IN FieldName varchar(1000),
IN param1id int
)
BEGIN
declare sqlstr varchar(2000);
declare wherestr varchar(1000);
set sqlstr=CONCAT('select ',FieldName);
set wherestr=CONCAT(' from attendrecord WHERE seq =',cast(param1id as char(20)));
set sqlstr=CONCAT(sqlstr,wherestr);
set @sqlstr=sqlstr;
-- select @sqlstr;
-- call(sqlstr);
PREPARE stmt FROM @sqlstr; -- 5.1 up
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ; call proc_Select_AttendrecordTitle('rdescription',1); select concat(2); select cast(2 as char(20));
#模糊查询
DELIMITER $$
DROP PROCEDURE IF EXISTS proc_Select_AttendrecordFuzzySearch $$
CREATE PROCEDURE proc_Select_AttendrecordFuzzySearch
( IN FieldList varchar(1000),
IN wherestr varchar(2000)
)
BEGIN
declare sqlstr varchar(2000);
declare ifwherestr varchar(1000);
declare iflist varchar(1000);
set ifwherestr='';
if FieldList='' then
set iflist=' * ';
else
set iflist=FieldList;
end if;
if wherestr<>'' then
set ifwherestr=CONCAT(' WHERE ',wherestr);
end if;
set sqlstr=CONCAT('select ',iflist);
set sqlstr=CONCAT(sqlstr,' from attendrecord ');
set sqlstr=CONCAT(sqlstr,ifwherestr);
set @sqlstr=sqlstr;
-- select @sqlstr;
-- call(sqlstr);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ; -- seq =1
call proc_Select_AttendrecordFuzzySearch('rdescription','seq=1');

  

csharp: MySQL Stored Procedure using DAL的更多相关文章

  1. csharp: Oracle Stored Procedure DAL using ODP.NET

    paging : http://www.codeproject.com/Articles/44858/Custom-Paging-GridView-in-ASP-NET-Oracle https:// ...

  2. Retrieving Out Params From a Stored Procedure With Python

    http://www.rodneyoliver.com/blog/2013/08/08/retrieving-out-params-from-a-stored-procedure-with-pytho ...

  3. JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  4. Archive MySQL Data In Chunks Using Stored Procedure

    sqladminon September 26, 2018 In a DBA’s day to day activities, we are doing Archive operation on ou ...

  5. Home / Python MySQL Tutorial / Calling MySQL Stored Procedures in Python Calling MySQL Stored Procedures in Python

    f you are not familiar with MySQL stored procedures or want to review it as a refresher, you can fol ...

  6. [MySQL] Stored Procedures 【转载】

    Stored routines (procedures and functions) can be particularly useful in certain situations: When mu ...

  7. Cursors in MySQL Stored Procedures

    https://www.sitepoint.com/cursors-mysql-stored-procedures/ After my previous article on Stored Proce ...

  8. How To Call Stored Procedure In Hibernate

    How To Call Stored Procedure In Hibernate In this tutorial, you will learn how to call a store proce ...

  9. 数据库之存储过程(Stored Procedure)【未完待续】

    存储过程(Stored Procedure,以下简称SP)是啥?有什么用?优缺点? 一个SP是一段存储在数据库系统中的一条或多条sql语句的集合,类似一条批处理,它能被触发器,或者其他的SP以及APP ...

随机推荐

  1. lua中清空目录和递归创建目录

    lua中的 lfs.mkdir lfs.rmdir只能针对单个目录,且lfs.rmdir不能清空文件夹 于是我想到了使用os.execute 递归创建目录如下os.execute("mkdi ...

  2. How To Install Proxmox Nested on VMware ESXi (Full Support OpenVZ & KVM)

    https://imanudin.net/2015/03/04/how-to-install-proxmox-nested-on-vmware-esxi-full-support-openvz-kvm ...

  3. iOS-App发布证书的申请与使用

    i开发环境:xcode5.1.1 iphonesdk:7.1 开发机器:iMac 真机部署测试:apple个人开发者ID 向导: 必备IDP证书和distribution证书(第一个证书是真机部署测试 ...

  4. Windows无法安装到这个磁盘。请确保在计算机的BIOS菜单中启用了磁盘控制器

    今天一朋友问我这个问题,呃,以前我也遇到过,但忘记记录了,这次就记录一下吧,就懒得打字了,图片里面很清楚了 不说点什么的话是不是太水了O(∩_∩)O~,好吧扩充一下: Windows无法安装到这个磁盘 ...

  5. 【Win 10 应用开发】打印UI元素

    Windows App支持将UI界面进行打印的功能,这与浏览器中的打印网页的用途相近,其好处就是“所见即所得”,直接把界面上呈现的内容打印下来,比重新创建打印图像方便得多. 要在通用App中实现打印, ...

  6. OpenCASCADE BRepTools

    OpenCASCADE BRepTools eryar@163.com Abstract. OpenCASCADE BRepTools provides utilities for BRep data ...

  7. Mesh Data Structure in OpenCascade

    Mesh Data Structure in OpenCascade eryar@163.com 摘要Abstract:本文对网格数据结构作简要介绍,并结合使用OpenCascade中的数据结构,将网 ...

  8. Python标准模块--linecache

    1.模块简介 linecache主要用于缓存文件内容,如果下次继续读取该文件,则不需要打开文件,直接在缓存中获取该文件内容. 2.模块使用 模块的基本方法有getline,clearcache,get ...

  9. 【原创】.NET平台机器学习组件-Infer.NET连载(二)贝叶斯分类器

                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 微软Infer.NET机器学习组件文章目录:http:/ ...

  10. 写在最前面 - 每天5分钟玩转 OpenStack(1)

    <每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节逐一讨论 重 ...