当前位置: 首页 > news >正文

推荐10个优秀的国外ui设计网站动漫制作技术和动漫设计

推荐10个优秀的国外ui设计网站,动漫制作技术和动漫设计,北京装修平台网站,淘宝客网站要备案吗一、概念及形式 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令,通俗来讲存储过程其实就是能完成一定操作的一组SQL语句。 1、自定义语句结束符 DELIMITER $$ 2、创建 使用CREATE动作及PROCEDURE关键字进行过程创建,一般格式为&…

一、概念及形式

存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令,通俗来讲存储过程其实就是能完成一定操作的一组SQL语句。

1、自定义语句结束符

DELIMITER $$

2、创建

使用CREATE动作及PROCEDURE关键字进行过程创建,一般格式为:

CREATE PROCEDURE 进程名称 ([IN/OUT/INOUT 参数名 类型])

3、开始/结束

整个存储过程以BEGIN和END作为关键字,对其余进行语句包裹,一般格式为:

BEGIN......END

3.1 会话变量(用户变量)

可以在一个客户端会话的任何地方声明,作用域是整个会话,会话断开后,会话变量也就消失。会话变量名以@开头,使用SET直接赋值,在一个会话内,会话变量只需初始化一次。

SET @变量名 = 初始值

3.2 存储过程变量

只能在存储过程中使用,以DECLARE为关键字声明,定义格式如下

DECLARE 变量名 数据类型 [DEFAULT VALUE]

二、游标

1、简述

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标可以被看作是一个查询结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成的一个临时文件,提供了在查询结果集中向前或向后浏览数据、处理结果集中数据的能力,是处理数据的一种方法。

2、声明

使用之前必须先声明,可用DECLARE CURSOR语句声明游标,其一般格式为:

DECLARE CURSOR 游标 FOR SELECT-查询块

3、打开

使用OPEN语句的功能打开游标,实际上就是执行相应的SELECT查询语句,将查询结果放到缓冲区。这时游标处于活动状态,游标指针指向第一条记录。其一般格式为:

OPEN 游标

4、提取

FETCH语句是从游标中提取特定的一行。其一般格式为:

FETCH [[NEXT|PRIOR|FIRST|LAST|ABSOLUTE n|RELATIVE n]FROM] <游标名> [INTO:<主变量1>,<主变量2>......]

参数说明:

NEXT — 如果是在OPEN后第一次执行FETCH命令,则返回结果集的第一行,否则使游标的指针指向结果集的下一行,NEXT是默认的选项。
PRIOR — 返回结果集当前行的前一行。
FIRST — 返回结果集的第一行。
LAST — 返回结果集的最后一行。
ABSOLUTE n — 如果n是正数,返回结果集的第n行,如果n是负数,则返回结果集的倒数第n行。
RELATIVE n — 如果n是正数,返回当前行后的第n行,如果n是负数,则返回当前行开始倒数的第n行。
INTO — 该语句的功能是把游标取出的当前记录送入到主变量,INTO后的主变量要与在DECLARE CURSOR中SELECT的字段相对应(赋值的顺序必须和取出的顺序一致)。

5、遍历

5.1 WHILE方式

OPEN 游标;
FETCH 游标 INTO 存储过程变量;
WHILE 循环条件 DO
执行操作
FETCH 游标 INTO 存储过程变量 ;
END WHILE;
CLOSE 游标;

先判断后执行——使用WHILE循环时,需要在循环之前进行一次FETCH动作,游标的属性才会起作用,而且数据处理动作必须放在循环体内的FETCH方法之前,循环体内的FETCH方法要放在最后,否则游标的循环会多执行一次。        

5.2 REPEAT方式

OPEN 游标;
REPEAT
执行操作;
UNTIL 退出条件 END REPEAT;
CLOSE 游标;

先执行后判断——在REPEAT语句中不管是否满足给定条件,首先会执行一次循环体中的操作,然后再在UNTIL中判断给定的条件是否成立,如果条件不成立会继续执行,如果条件成立则退出REPEAT循环。

5.3 LOOP方式

-- label为循环别名
label: LOOP
执行语句
IF 退出条件 THEN
LEAVE label;
END IF;
END LOOP label;

LOOP为死循环,需要手动退出循环,其中可以把LEAVE看成JAVA中的BREAK,ITERATE看成JAVA的CONTINUE。

ps:在遍历的过程中,当循环的结束条件是定义的变量值发生变化(例如FLAG=0->FLAG=1),可能会导致遍历的次数+1的情况,是由于当遍历到游标的最后一条数据之后,此时的变量还是原值(FLAG=0),执行第N+1次循环,但是在执行FETCH语句时发现没有数据可用,变量值发生改变(FLAG=1),但后续语句依旧执行并跳出循环,因此导致了多执行一次的情况,解决方式:在FETCH语句与执行语句间增加判断条件(IF FLAG = 0 THEN......)。

6、关闭

使用CLOSE 语句关闭游标,其一般格式为:

CLOSE 游标

三、动态SQL及执行

1、创建

建议使用concat字符串连接函数进行字符串拼接,并赋值给定义完成的变量,其一般格式为:

SET <变量名> = CONCAT(STR1,STR2,...)

2、执行

动态语句的执行分为准备、执行和消除三个阶段

PREPARE <别名> FROM <SQL语句>|<变量名>;
EXECUTE <别名>;
DEALLOCATE PREPARE <别名>;

以下示例展示动态游标(利用游标和动态SQL的组合)、多重游标、避免存储N+1次循环结果的示例,具体存储过程语句如下:

-- 次自定义结束符
DELIMITER $$DROP PROCEDURE IF EXISTS MigrateReproducibl--eData $$
-- 声明存储过程
CREATE PROCEDURE `MigrateReproducibleData`(IN `queryType` VARCHAR ( 100 ),IN `queryValue` VARCHAR ( 100 ))BEGIN
-- 定义局部变量存储main表中的数据
DECLARE billId VARCHAR ( 100 );
DECLARE billCode VARCHAR ( 100 );
DECLARE billType VARCHAR ( 100 );
DECLARE totalFee VARCHAR ( 100 );
DECLARE companyId VARCHAR ( 100 );
DECLARE projectId VARCHAR ( 100 );
DECLARE memberId VARCHAR ( 100 );-- 定义外层游标循环标记
DECLARE mainDone INT DEFAULT FALSE;
DECLARE mainSet CURSOR FOR SELECT * from mainView;
-- 定义游标循环结束时的标记操作	
DECLARE CONTINUE HANDLER FOR NOT FOUND SET mainDone = TRUE;DROP VIEW IF EXISTS mainView;
-- 定义外层游标的数据集合
set @mainSQL = CONCAT('CREATE VIEW mainView AS',
'SELECT main.BILL_ID,main.BILL_CODE,main.BILL_TYPE,main.TOTAL_FEE,main.COMPANY_ID,project.ID AS projectID,member.ID AS memberIDFROM reproducible_member_bill_main mainLEFT JOIN t_rse_subsidy_project project ON main.PROJECT_CODE = project.PROJECT_CODELEFT JOIN market_member member ON member.MEMBER_CODE = main.MEMBER_ID WHERE main.', `queryType`, ' = "', `queryValue`, '"' );-- 执行动态语句
PREPARE doMain FROM @mainSQL;
EXECUTE doMain;
DEALLOCATE PREPARE doMain;-- 外层游标循环开始
OPEN mainSet;
WHILE NOT mainDone D-- 取出数据-并赋值
FETCH mainSet INTO billId,billCode,billType,totalFee,companyId,projectId,memberId;
-- 避免第N+1次操作		
IF NOT mainDone THEN -- 开始内层游标BEGIN-- 定义局部变量存储detaiL中的数据DECLARE tradeDate VARCHAR ( 100 );DECLARE actualAmount VARCHAR ( 100 );DECLARE actualAmountNoTax VARCHAR ( 100 );-- 定义内层游标循环标记DECLARE dateDone INT DEFAULT FALSE;-- 定义内层游标数据集合DECLARE dateSet CURSOR FOR SELECT * from dateView;-- 定义内层游标循环结束时的操作DECLARE CONTINUE HANDLER FOR NOT FOUND SET dateDone = TRUE;set @dateSQL = CONCAT('CREATE VIEW dateView AS ','SELECT DISTINCT TRADE_DATE FROM reproducible_bill_detail WHERE BILL_ID = "', billId, '"' );DROP VIEW IF EXISTS dateView;PREPARE doMain FROM @dateSQL;EXECUTE doMain;DEALLOCATE PREPARE doMain;-- 开启内层游标,对不同支付日期的数据进行抽取OPEN dateSet;-- 内层循环开始		WHILE NOT dateDone DOFETCH dateSet INTO tradeDate;-- 增加判断,游标循环结束后,不插入数据,减少多一次的循环IF NOT dateDone THEN -- 获取“YES”状态数据SELECT `VALUE` INTO actualAmount FROM reproducible_bill_detail WHERE BILL_ID = billid AND TRADE_DATE = tradeDate AND SETTLEMENT_ITEM_ID = 'YES';-- 获取“NO”状态数据	SELECT `VALUE` INTO actualAmountNoTax FROM reproducible_bill_detail WHERE BILL_ID = billid AND TRADE_DATE = tradeDate AND SETTLEMENT_ITEM_ID = 'No';-- 更新数据表	INSERT INTO `bill_payment_result` (`ID`,`BILL_CODE`,`MEMBER_ID`,`BILL_TYPE`,`PROJECT_CODE`,`TRADE_DATE`,`COST_TYPE`,`ACTUAL_AMOUNT`,`HAVA_PAID_AMOUNT`,`TOTAL_AMOUNT`,`PAYMENT_TIME`,`FINANCIAL_STATUS`,`DATA_STATUS`,`CREATE_TIME`,`COMPANY_ID`,`PAY_INFO_ID`,`PAY_MODE`,`DOCU_NUM`,`ACTUAL_AMOUNT_NO_TAX`,`PAY_STATUS`,`FAIL_MEMO`,`CASH_AMOUNT`,`BILL_AMOUNT`,`PAY_PROGRESS`)VALUES(REPLACE(UUID(),'-',''),billCode,memberId,billType,projectId,tradeDate,'01',actualAmount,actualAmount,totalFee,NULL,'16','01',DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s'),companyId,NULL,NULL,NULL,actualAmountNoTax,'01',NULL,NULL,NULL,'02');END IF ;-- 结束内循环END WHILE ; -- 关闭内部游标CLOSE dateSet;END;
END IF;
-- 结束外循环	
END WHILE ;
-- 关闭外部游标
CLOSE mainSet;END $$DELIMITER;

http://www.yayakq.cn/news/123539/

相关文章:

  • 教育网站做婚姻网站赚钱
  • 哪个网站做美食视频深圳市年检在哪个网站做
  • 地区汽车修理网站建设网站建设重点步骤
  • 网站欢迎页面flashphp wordpress joom
  • 学校为什么要建设网站北京众合天下管理咨询有限公司
  • 泰安放心的企业建站公司有个做h手游的网站
  • 网站可以做软著吗老区建设网站
  • 贵州西能电力建设有限公司网站改行做网站
  • 京东网站开发多少钱网络规划设计师2017至2021年试题分析与解答 pdf
  • 电子商务网站建设的核心是什么wordpress mysql类
  • 专业维护网站的公司商城网站建设公司地址
  • 电子商务网站建设公司网站制作费用需要多少钱
  • 网站备案流程以及所需资料福州网站建设方案推广
  • 漯河网站建设兼职做网站推淘宝客
  • 成立网站开发公司三星网上商城怎么退货
  • 建设个人网站流程遗像制作图片的软件
  • 宁波免费网站建站模板wordpress评论调用
  • 嘉兴网站排名优化费用大同百度做网站多少钱
  • 物流公司网站开发与淘宝对接 在淘宝卖家中心显示物流信息做零售的外贸网站
  • 上海 响应式网站公司网站怎样做平面设计图
  • 网站设计制作合同做网页游戏网站需要什么
  • 广东工程建设信息网站wordpress所有文章新窗口打开
  • 天商阳光网站邮箱长春网站建设网
  • 正一品网站建设免费包装设计在线生成
  • 泰州制作公司网站网络运维面试
  • 网站开发工作好找吗网站里的副栏目是什么
  • 制作很好的网站三亚中国检科院生物安全中心门户网站建设
  • wordpress网站搜不到做网站即墨
  • 运营好还是网站开发好临安做网站的公司有哪些
  • 免费网站建设网站开发公司好消息tvapp电视版