`

MySQL存储过程例子

阅读更多

DELIMITER $$

DROP PROCEDURE IF EXISTS `fxmonkey`.`SPSearchSystemPerformance` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `SPSearchSystemPerformance`(
   _systemName VARCHAR(30),
   _pair  VARCHAR(20),
   _grossPlMax   DOUBLE ,
 _grossPlMin   DOUBLE ,
 ...
   _calcDate DATE
)
BEGIN

DECLARE _sql VARCHAR(2000);

SET @sql = '
SELECT systemID, systemName,pair, grossPL, pl,
       numTrades, maxDD, profitFactor, pipsTrade, creationDate,
       avgTradeTime, maxPos, riskAdjust, winPercent, po,
       otherAPT, otherALT, otherLWT, otherLLT, otherDIS,
       calcStartDate, calcEndDate
FROM TblSystemPerformance
WHERE 1 = 1
';

SET @sql = CONCAT(@sql, ' AND grossPL >= ' , _grossPlMin ,
                        ' AND grossPL <= ' , _grossPlMax , ' ');
SET @sql = CONCAT(@sql, ' AND pl >= ' , _plMin ,
                        ' AND pl <= ' , _plMax , ' ');
...
IF (_calcDate IS NOT NULL) THEN
SET @sql = CONCAT(@sql, ' AND YEAR(calcStartDate) = ', YEAR(_calcDate) ,
                        ' AND MONTH(calcStartDate) = ', MONTH(_calcDate), ' ');
END IF;
IF (_creationDate IS NOT NULL) THEN
SET @sql = CONCAT(@sql, ' AND creationDate >= ', _creationDate ,' ');
END IF;
IF (_systemName IS NOT NULL) THEN
SET @sql = CONCAT(@sql, ' AND systemName = ''', _systemName , ''' ');
END IF;
IF (_pair IS NOT NULL) THEN
SET @sql = CONCAT(@sql, ' AND pair LIKE ''%', _pair , '%'' ');
END IF;


PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

 

END $$

DELIMITER ;

 

 =======================================

 

DELIMITER $$

DROP PROCEDURE IF EXISTS `fxmonkey`.`SPIntelligentMiningDavid` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `SPIntelligentMiningDavid`()
BEGIN

Create TEMPORARY TABLE _TblSystemSeeds (
  systemName varchar(30),
  pair varchar(20)
);

 


INSERT _TblSystemSeeds
SELECT systemName, pair FROM (
SELECT systemName, pair, COUNT(systemID) 'ccc' FROM TblSystemPerformance

WHERE
(
   (  YEAR(calcStartDate) = 2009 AND MONTH(calcStartDate) in (1)  )
   OR
   (  YEAR(calcStartDate) = 2008 AND MONTH(calcStartDate) in (11,12)  )
)
 AND grossPl > 0

 AND numTrades > 10 AND numTrades < 100
 AND maxDd > -1000
 AND maxPos < 5

GROUP BY systemName, pair

) consecutive
WHERE ccc > 1
;

 

SELECT COUNT(*) FROM _TblSystemSeeds;

 


SELECT COUNT(*) FROM _TblSystemSeeds seeds, TblSystemPerformance pers
WHERE seeds.systemName = pers.systemName AND seeds.pair = pers.pair

AND grossPL > 0
AND YEAR(pers.calcStartDate) = 2009 AND MONTH(pers.calcStartDate) in (2)
;


TRUNCATE TABLE  _TblSystemSeeds;
DROP TABLE _TblSystemSeeds;

END $$

DELIMITER ;

 

===============================================

 

DELIMITER $$

DROP PROCEDURE IF EXISTS `DBName`.`StoredProcsName` $$
CREATE DEFINER=`root`@`169.181.251.0/255.255.255.0` PROCEDURE `StoredProcsName`(paraName Type)
BEGIN
  Create TEMPORARY TABLE _rtn (
    cid int null,
    groupId varchar(15) null,
    reportTypes varchar(200) null,
    ReportingInd varchar(20) null,
    MgnRiskInd varchar(20) null
    said int null,
    sa varchar(8) null);

  insert _rtn
  SELECT distinct _ClientId as ClientId,
    SB.groupId,
    '' as reportTypes,
    case when (GRP.eqReportingInd ='Y')
    then 'Reporting,'
    else '' end as eqReportingInd,
    case when (GRP.eqMarginInd='Y')
    then 'Margin,'
    case when (GRP.eqMgnRiskVirtualInd='Y')
    then 'Margin & Risk (Virtual),' end as eqMgnRiskVirtualInd,
    AH.SubAcctId AS SubAcct,

    case when PFS.subAcct is null then '' else PFS.subAcct end as subAcct
  FROM GroupSubAcct SB  LEFT outer JOIN Group GRP ON (SB.groupId = GRP.groupId)
  LEFT OUTER JOIN AcctHierarchy AH ON (SB.Id=AH.Id AND AH.accountType='SUB-ACCT')
  LEFT OUTER JOIN SubAcct PFS ON (AH.SubAcctId=PFS.Id)
  WHERE AH.ClientId=_ClientId GROUP BY AH.SubAcctId ORDER BY SB.groupId,AH.SubAcctId;
  /* update temp table and concat all the strings*/
  update _rtn
     set reportTypes=
      concat(eqReportingInd,eqMarginInd,eqAFCMEInd,eqRiskInd,eqAdminInd,eqInterestInd,
      eqMgnRiskInd,eqMgnRiskVirtualInd);
  /* remove the last ','*/
  update _rtn
  set reportTypes = Left(reportTypes,length(reportTypes)-1) where length(reportTypes)>0;
/* return */
  select  ClientId,
          groupId,
          case when reportTypes is null then '' else reportTypes end as reportTypes,
          SubAcct,
          subAcct
  from _rtn order by groupId, SubAcct;
  /*delte temp data*/
  drop table  _rtn;
END $$

DELIMITER ;

分享到:
评论

相关推荐

    mysql存储过程实例

    MySQL 存储过程实例 MySQL 存储过程实例详细介绍了 MySQL 存储过程的开发步骤,本节将通过具体的实例讲解 PHP 是如何操纵 MySQL 存储过程的。 创建存储过程 存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 ...

    MySQL存储过程实例教程

    ### MySQL存储过程实例教程 #### 存储过程概念与优势 存储过程,作为数据库中一种预编译的SQL语句集合,旨在实现特定功能并存储于数据库内,用户仅需指定其名称及必要参数即可调用执行。这种设计极大地简化了...

    MYSQL存储过程实例

    MYSQL 存储过程 实例,要的自己下,分有点贵哦。

    MySQL存储过程实例教程.doc

    MySQL存储过程实例教程 MySQL存储过程是数据库存储的一个重要的功能,它允许控制数据的访问方式,提供了灵活的编程方式,提高了数据库的处理速度和灵活性。本教程将详细介绍 MySQL 存储过程的概念、优点、创建和...

    PHP和MySQL存储过程实例

    根据给定的信息,我们可以深入探讨PHP与MySQL存储过程的相关知识点,包括如何在MySQL中使用`CONCAT`函数、创建存储过程以及如何通过PHP脚本来调用这些存储过程。 ### 使用 CONCAT 函数 #### 标题中的示例 ```sql ...

    mysql存储过程实例详解,pdf

    mysql存储过程实例详解

    MySQL存储过程的异常处理方法

    本实例展示了如何在MySQL存储过程中实现异常处理,以捕获并处理可能出现的错误。 首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个...

    pb使用odbc调用mysql存储过程的例子.txt

    给了一个小的mysql 存储过程的例子。同时给出了一个在pb9中调用的例子.本例子是给出的mysql8.0的存储过程。对于5.7一下的现在odbc很难有支持

    mysql存储过程之返回多个值的方法示例

    本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...

    SQL存储过程实例.doc

    在这个例子中,存储过程被调用了六次,每次加薪金额为100元,根据不同的起始工资进行操作。 接下来,我们看几个关于SQL查询的实例,这些实例涉及到了关系数据库中的联接、条件过滤和时间区间查询: 1. 查询...

    mysql复杂存储过程实例(游标、临时表、循环、递归)

    本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。

    MYSQL的存储过程实例文档

    ### MySQL存储过程详解 #### 一、存储过程概述 存储过程是一种特殊类型的SQL代码集合,它们预先被编译并存储在数据库服务器上。用户可以通过指定存储过程名称并提供必要的参数来执行这些存储过程。这种机制提供了...

    MySQL存储过程实例教程详解.docx

    MySQL存储过程是数据库管理系统提供的一种高级程序设计语言,允许用户在数据库中封装一系列复杂的操作,以便重复使用。在MySQL 5.0及后续版本中,存储过程被引入,极大地提升了数据库管理和应用程序的效率。本教程将...

    mysql 存储过程 实战

    ### MySQL存储过程实战知识点 #### 一、存储过程概述 MySQL 存储过程是一种预编译的 SQL 脚本,它可以包含复杂的逻辑控制结构、循环等操作,并且可以接受参数,执行完后还可以返回结果。存储过程可以提高数据处理...

    存储过程文档--mysql

    存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...

Global site tag (gtag.js) - Google Analytics