




免费预览已结束,剩余74页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章事务与存储过程,事务管理存储过程的使用,存储过程的创建综合案例,学习目标,事务管理,点击查看本小节知识架构,存储过程的创建,点击查看本小节知识架构,存储过程的使用,综合案例存储过程应用,点击查看本小节知识架构,知识架构,6.1事务管理,返回目录,知识架构,6.2存储过程的创建,返回目录,知识架构,6.3存储过程的使用,返回目录,6.1事务管理,6.1.1事务的概念所谓的事务就是针对数据库的一组操作,它可以由一条或多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句无法执行,那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。开启事务的语句,具体如下:提交事务的语句,具体如下,STARTTRANSACTION;,COMMIT;,6.1事务管理,6.1.1事务的概念回滚事务的语句,具体如下:需要注意的是,ROLLBACK语句只能针对未提交的事务执行回滚操作,已提交的事务是不能回滚的。接下来通过一个转账的案例来演示如何使用事务。,ROLLBACK;,6.1事务管理,6.1.1事务的概念在演示之前首先需要创建一个名称为chapter06的数据库,并且在chapter06中创建一个account表,插入相应的数据,SQL语句具体如下:,6.1事务管理,6.1.1事务的概念【例6-1】首先开启一个事务,然后通过UPDATE语句将a账户的100元钱转给b账户,最后提交事务,具体语句如下:上述语句执行成功后,可以使用SELECT语句来查询account表中的余额,查询结果如下:,6.1事务管理,6.1.1事务的概念事务有很严格的定义,它必须同时满足四个特性,针对这四个特性的讲解,具体如下:(1)原子性(Atomicity)原子性是指一个事务必须被视为一个不可分割的最小工作单元,只有事务中所有的数据库操作都执行成功,才算整个事务执行成功,事务中如果有任何一个SQL语句执行失败,已经执行成功的SQL语句也必须撤销,数据库的状态退回到执行事务前的状态。,6.1事务管理,6.1.1事务的概念事务有很严格的定义,它必须同时满足四个特性,针对这四个特性的讲解,具体如下:(2)一致性(Consistency)一致性是指事务将数据库从一种状态转变为下一种一致的状态。例如,在表中有一个字段为姓名,具有唯一约束,即姓名不能重复,如果一个事务对姓名进行了修改,使姓名变得不唯一了,这就破坏了事务的一致性要求,如果事务中的某个动作失败了,系统可以自动撤销事务,返回初始化的状态。,6.1事务管理,6.1.1事务的概念事务有很严格的定义,它必须同时满足四个特性,针对这四个特性的讲解,具体如下:(3)隔离性(Isolation)隔离性还可以称为并发控制、可串行化、锁等,当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。,6.1事务管理,6.1.1事务的概念事务有很严格的定义,它必须同时满足四个特性,针对这四个特性的讲解,具体如下:(4)持久性(Durability)事务一旦提交,其所做的修改就会永久保存到数据库中,即使数据库发生故障也不应该对其有任何影响。需要注意的是,事务的持久性不能做到100%的持久,只能从事务本身的角度来保证永久性,而一些外部原因导致数据库发生故障,如硬盘损坏,那么所有提交的数据可能都会丢失。,6.1事务管理,6.1.2事务的提交在数据库中事务中的提交操作需要用户进行确认,当用户确认提交后,事务中的操作才会执行成功,这个过程就是手动提交的过程。为了说明事务的提交方式为手动提交,接下来,在例6-1的基础上进行操作,开启一个事务,使用UPDATE语句实现由b账户向a账户转100元钱的转账功能,具体操作如下:,6.1事务管理,6.1.2事务的提交(1)执行转账语句,不提交事务,STARTTRANSACTION;UPDATEaccountSETmoney=money+100WHEREname=a;UPDATEaccountSETmoney=money-100WHEREname=b;,开启事务,b账户向a账户转账100元,6.1事务管理,6.1.2事务的提交(1)执行转账语句,不提交事务上述语句执行成功后,使用SELECT语句来查询account表中的余额,查询结果如下:,mysqlSELECT*FROMaccount;+-+-+-+|id|name|money|+-+-+-+|1|a|1000|2|b|1000|+-+-+-+2rowsinset(0.00sec),在事务中实现了转账功能,6.1事务管理,6.1.2事务的提交(1)执行转账语句,不提交事务此时,退出数据库然后重新登录,并查询数据库中各账户的余额信息,查询结果如下:,mysqlSELECT*FROMaccount;+-+-+-+|id|name|money|+-+-+-+|1|a|900|2|b|1100|+-+-+-+2rowsinset(0.00sec),事务中的转账操作没有成功,结论:在事务中转账成功后没有提交事务就退出了数据库,由于事务中的语句不能自动提交,因此当前的操作会被自动取消。,6.1事务管理,6.1.2事务的提交(2)执行转账语句,提交事务,STARTTRANSACTION;UPDATEaccountSETmoney=money+100WHEREname=a;UPDATEaccountSETmoney=money-100WHEREname=b;COMMIT;,开启事务,b账户向a账户转账100元,commit语句用来提交事务,6.1事务管理,6.1.2事务的提交(2)执行转账语句,提交事务上述语句执行成功后,退出数据库然后再重新登录,使用SELECT语句查询数据库中各账户的余额信息,查询结果如下:,mysqlSELECT*FROMaccount;+-+-+-+|id|name|money|+-+-+-+|1|a|1000|2|b|1000|+-+-+-+2rowsinset(0.00sec),实现了转账功能,结论:事务中的操作都是手动提交的,因此在操作完事务时,一定要使用COMMIT语句提交事务,否则事务操作会失败。,6.1事务管理,6.1.3事务的回滚在操作一个事务时,如果发现当前事务中的操作是不合理的,此时只要还没有提交事务,就可以通过回滚来取消当前事务。为了演示事务的回滚操作,在6.1.2小节的基础上进行操作,这时的a账户有1000元,b账户有1000元,开启一个事务,通过update语句将a账户的100元钱转给b账户,具体语句如下:,STARTTRANSACTION;UPDATEaccountSETmoney=money-100WHEREname=a;UPDATEaccountSETmoney=money+100WHEREname=b;,开启事务,a账户向b账户转账100元,6.1事务管理,6.1.3事务的回滚上述语句执行成功后,使用SELECT语句查询A账户和B账户的金额,查询结果如下:,mysqlSELECT*FROMaccount;+-+-+-+|id|name|money|+-+-+-+|1|a|900|2|b|1100|+-+-+-+2rowsinset(0.00sec),转账操作成功,6.1事务管理,6.1.3事务的回滚从上述结果可以看出,a账户成功给b账户转账100元钱,如果此时a账户不想给b账户转账了,由于事务还没有提交,就可以将事务回滚,具体语句如下:ROLLBACK语句执行成功后,再次使用SELECT语句查询数据库,查询结果如下:,ROLLBACK;,mysqlSELECT*FROMaccount;+-+-+-+|id|name|money|+-+-+-+|1|a|1000|2|b|1000|+-+-+-+2rowsinset(0.00sec),回滚操作成功,当前事务中的操作取消了,6.1事务管理,6.1.4事务的隔离级别数据库是多线程并发访问的,所以很容易出现多个线程同时开启事务的情况,这样就会出现脏读、重复读以及幻读的情况,为了避免这种情况的发生,就需要为事务设置隔离级别。在MySQL中,事务有四种隔离级别,接下来将针对这四种隔离级别进行详细地讲解。(1)READUNCOMMITTED(读未提交)(2)READCOMMITTED(读提交)(3)REPEATABLEREAD(可重复读)(4)SERIALIZABLE(可串行化),6.2存储过程的创建,6.2.1创建存储过程创建存储过程,需要使用CREATEPROCEDURE语句,创建存储过程的基本语法格式如下:,CREATEPROCEDUREsp_name(proc_parameter)characteristicsroutine_body,CREATEPROCEDURE为用来创建存储过程的关键字,sp_name为存储过程的名称,proc_parameter为指定存储过程的参数列表,characteristics用于指定存储过程的特性,routime_body是SQL代码的内容,可以用BEGINEND来表示SQL代码的开始和结束,6.2存储过程的创建,6.2.1创建存储过程proc_parameter为指定存储过程的参数列表,它的参数列表的形式如下:type表示的参数类型,可以是MySQL数据库中的任意类型。,IN|OUT|INOUTparam_nametype,输入参数,输出参数,输入输出参数,参数名称,参数的类型,6.2存储过程的创建,6.2.1创建存储过程characteristics用于指定存储过程的特性,它的取值说明具体如下:(1)LANGUAGESQL:说明routine_body部分是由SQL语句组成的,当前系统支持的语言为SQL,SQL是LANGUAGE的唯一值。(2)NOTDETERMINISTIC:指明存储过程执行的结果是否正确。DETERMINISTIC表示结果是正确的,NOTDETERMINISTIC表示结果是不确定的。如果没有指定任意一个值,默认为NOTDETERMINISTIC。(3)CONTAINSSQL|NOSQL|READSSQLDATA|MODIFIESSQLDATA:指明子程序使用SQL语句的限制。,6.2存储过程的创建,6.2.1创建存储过程characteristics用于指定存储过程的特性,它的取值说明具体如下:(4)SQLSECURITYDEFINER|INVOKER:指明谁有权限来执行。DEFINER表示只有定义者才能执行。INCOKER表示拥有权限的调用者可以执行。默认情况下,系统指定为DEFINER。(5)COMMENTstring:注释信息,可以用来描述存储过程。,6.2存储过程的创建,6.2.1创建存储过程接下来通过一个案例演示一下存储过程的创建,首先在数据库chapter06中创建表student,创建student表的SQL语句如下所示:,6.2存储过程的创建,6.2.1创建存储过程然后使用INSERT语句向student表中插入4条记录,INSERT语句如下所示:,6.2存储过程的创建,6.2.1创建存储过程【例6-2】创建一个查看student表的存储过程,其创建语句如下:上述代码创建了一个存储过程Proc,每次调用这个存储过程的时候都会执行SELECT语句查看表的内容,代码的执行过程如下:,6.2存储过程的创建,6.2.2变量的使用在MySQL中,变量可以在子程序中声明并使用,这些变量的作用范围是在BEGINEND程序中。在存储过程中使用DECLARE语句定义变量,具体语法格式如下:上述语法格式中,var_name为局部变量的名称。DEFAULTvalue子句给变量提供一个默认值。该值除了可以被声明为一个常数之外,还可以被指定为一个表达式。如果没有DEFAULT子句,变量的初始值为NULL。,DECLAREvar_name,varnamedate_typeDEFAULTvalue;,6.2存储过程的创建,6.2.2变量的使用定义一个名称为myvariable的变量,类型为INT类型,默认值为100,示例代码如下:定义变量之后,为变量赋值可以改变变量的默认值,MySQL中使用SET语句为变量赋值,语法格式如下:,DECLAREmyvariableINTDEFAULT100;,SETvar_name=expr,var_name=expr;,6.2存储过程的创建,6.2.2变量的使用声明3个变量,分别为var1、var2、var3,数据类型为INT,使用SET为变量赋值,示例代码如下:,DECLAREvar1,var2,var3INT;SETvar1=10,var2=20;SETvar3=var1+var2;,6.2存储过程的创建,6.2.2变量的使用除了可以使用SET语句为变量赋值外,MySQL中还可以通过SELECTINTO为一个或多个变量赋值,该语句可以把选定的列直接存储到对应位置的变量。使用SELECTINTO的具体语法格式如下:在上述语法格式中,col_name表示字段名称;var_name表示定义的变量名称;table_expr表示查询条件表达式,包括表名称和WHERE子句。,SELECTcol_nameINTOvar_nametable_expr;,6.2存储过程的创建,6.2.2变量的使用【例6-3】声明变量s_grade和s_gender,通过SELECTINTO语句查询指定记录并为变量赋值,具体代码如下:上述语句将student表中name为rose的同学的成绩和性别分别存入到了变量s_grade和s_gender中。,DECLAREs_gradeFLOAT;DECLAREs_genderCHAR(2);SELECTgrade,genderINTOs_grade,s_genderFROMstudentWHEREname=rose;,6.2存储过程的创建,6.2.3定义条件和处理程序定义条件是事先定义程序执行过程中遇到的问题,处理程序定义了在遇到这些问题时应当采取的处理方式,并且保证存储过程在遇到警告或错误时能继续执行。,6.2存储过程的创建,6.2.3定义条件和处理程序1、定义条件在编写存储过程时,定义条件使用DECLARE语句,语法格式如下:,DECLAREcondition_nameCONDITIONFORcondition_type;/condition_type的两种形式:condition_type:SQLSTATEVALUEsqlstate_value|mysql_error_code,condition_name表示所定义的条件的名称;condition_type表示条件的类型;sqlstate_value和mysql_error_code都可以表示MySQL的错误,sqlstate_value是长度为5的字符串类型错误代码,mysql_error_code为数值类型的错误代码。,6.2存储过程的创建,6.2.3定义条件和处理程序【例6-4】定义“ERROR1148(42000)”错误,名称为command_not_allowed。可以用两种不同的方法类来定义,具体代码如下:,/方法一:使用sqlstate_valueDECLAREcommand_not_allowedCONDITIONFORSQLSTATE42000;/方法二:使用mysql_error_codeDECLAREcommand_not_allowedCONDITIONFOR1148;,6.2存储过程的创建,6.2.3定义条件和处理程序2、定义处理程序MySQL书用DECLARE语句定义处理程序,具体语法格式如下:,DECLAREhandler_typeHANDLERFORcondition_value,sp_statementhandler_type:CONTINUE|EXIT|UNDOcondition_value:|condition_name|SQLWARNING|NOTFOUND|SQLEXCEPTION|mysql_error_code,handler_type为错误处理方式,参数取3个值:CONTINUE、EXIT和UNDO。CONTINUE表示遇到错误不处理,继续执行;EXIT遇到错误马上退出;UNDO表示遇到错误后撤回之前的操作,MySQL中暂时不支持这样的操作。sp_statement参数为程序语句段,表示在遇到定义的错误时,需要执行的存储过程;condition_value表示错误类型。,6.2存储过程的创建,6.2.3定义条件和处理程序2、定义处理程序condition_value表示错误类型,可以有以下取值:SQLSTATEVALUEsqlstate_value包含5个字符的字符串错误值。condition_name表示DECLARECONDITION定义的错误条件名称。SQLWARNING匹配所有以01开头的SQLSTATE错误代码。NOTFOUND匹配所有以02开头的SQLSTATE错误代码。SQLEXCEPTION匹配所有没有被SQLWARNING或NOTFOUND捕获的SQLSTATE错误代码。mysql_error_code匹配数值类型错误代码。,6.2存储过程的创建,6.2.3定义条件和处理程序【例6-5】定义处理程序的几种方式,具体代码如下:,第一种方法是捕获sqlstate_value值。如果遇到sqlstate_value值为“42S02”,则执行CONTINUE操作,并且输出“NO_SUCH_TABLE”信息。,第二种方法是捕获mysql_error_code值,如果遇到mysql_error_code值为1146,则执行CONTINUE操作,并且输出“NO_SUCH_TABLE”信息。,第三种方法是先定义条件,然后再调用条件。这里先定义no_such_table条件,遇到1146错误就执行CONTINUE操作。,第四种方法是使用SQLWARNING,SQLWARNING捕获所有以01开头的sqlstate_value值,然后执行EXIT操作,并且输出“ERROR”信息。,第五种方法是使用NOTFOUND,NOTFOUND捕获所有以02开头的sqlstate_value值,然后执行EXIT操作,并且输出“NO_SUCH_TABLE”信息。,第六种方法是使用SQLEXCEPTION,SQLEXCEPTION捕获所有没有被SQLWARNING或NOTFOUND捕获的sqlstate_value值,然后执行EXIT操作,并且输出“ERROR”信息。,6.2存储过程的创建,6.2.3定义条件和处理程序接下来,通过一个案例来演示如何定义条件和处理程序,如例6-6所示。,6.2存储过程的创建,6.2.4光标的使用在编写存储过程时,查询语句可能会返回多条记录,如果数据量非常大,则需要使用光标来逐条读取查询结果集中的记录。光标是一种用于轻松处理多行数据的机制。,6.2存储过程的创建,6.2.4光标的使用1、光标的声明光标必须声明在声明变量、条件之后,声明处理程序之前。MySQL中使用DECLARE关键字来声明光标,声明光标的具体语法格式如下:,DECLAREcursor_nameCURSORFORselect_statement,接下来声明一个名为cursor_student的光标,示例代码如下:,DECLAREcursor_studentCURSORFORselects_name,s_genderFROMstudent;,cursor_name表示光标的名称;select_statement表示SELECT语句的内容,返回一个用于创建光标的结果集。,6.2存储过程的创建,6.2.4光标的使用2、光标的使用MySQL中打开和使用光标的语法格式如下:,OPENcursor_nameFETCHcursor_nameINTOvar_name,var_name,cursor_name表示参数的名称;var_name表示将光标中的SELECT语句查询出来的信息存入该参数中。,需要注意的是,var_name必须在声明光标之前就定义好。使用名称为cursor_student的光标。将查询出来的信息存入s_name和s_gender中,示例代码如下:,FETCHcursor_studentINTOs_name,s_gender;,6.2存储过程的创建,6.2.4光标的使用3、光标的关闭关闭光标的语法格式如下:值得一提的是,如果没有明确的关闭光标,它会在其声明的复合语句的末尾被关闭。,CLOSEcursor_name,6.2存储过程的创建,6.2.5流程控制的使用流程控制语句用于将多个SQL语句划分或组合成符合业务逻辑的代码块。MySQL中的流程控制语句包括:IF语句、CASE语句、LOOP语句、WHILE语句、LEAVE语句、ITERATE语句、REPEAT语句和WHILE语句。,6.2存储过程的创建,6.2.5流程控制的使用1、IF语句IF语句是指如果满足某种条件,就根据判断的结果为TRUE或FALSE执行相应的语句,其语法格式如下:,IFexpr_conditionTHENstatement_listELSEIFexpr_conditionTHENstatement_listELSEstatement_listENDIF,expr_condition表示判断条件,statement_list表示SQL语句列表,它可以包括一个或多个语句。如果expr_condition求值为TRUE,相应的SQL语句列表就会被执行;如果没有expr_condition匹配,则ELSE子句里的语句列表被执行。,6.2存储过程的创建,6.2.5流程控制的使用1、IF语句接下来演示一下IF语句的用法,示例代码如下:,IFvalISNULLTHENSELECTvalisNULL;ELSESELECTvalisnotNULL;ENDIF;,上述代码中,判断val值是否为空,如果val值为空,输出字符串“valisNULL”;否则输出字符串“valisnotNULL”。需要注意的是,IF语句都需要使用ENDIF来结束,不可省略。,6.2存储过程的创建,6.2.5流程控制的使用2、CASE语句CASE是另一个进行条件判断的语句,该语句有两种语句格式,第一种格式如下:,CASEcase_exprWHENwhen_valueTHENstatement_listWHENwhen_valueTHENstatement_listELSEstatement_listENDCASE,在上述语法格式中,case_expr表示条件判断的表达式,决定了哪一个WHEN子句会被执行;when_value表示表达式可能的值,如果某个when_value表达式与case_expr表达式结果相同,则执行对应THEN关键字后的statement_list中的语句,statement_list表示不同when_value值的执行语句。,6.2存储过程的创建,6.2.5流程控制的使用【例6-7】使用CASE流程控制语句的第一种格式,判断val值等于1、等于2,或者两者都不等,语句如下:在上述代码中,当val值为1,输出字符串”valis1”;当val值为2时,输出字符串“valis2”;否则输出字符串“valisnot1or2”。,CASEvalWHEN1THENSELECTvalis1;WHEN2THENSELECTvalis2;ELSESELECTvalisnot1or2;ENDCASE;,6.2存储过程的创建,6.2.5流程控制的使用2、CASE语句CASE语句的第二种格式如下:需要注意的是,这里讲解的用在存储过程里的CASE语句与“控制流程函数”里描述的SQLCASE表达式CASE语句有些不同。存储过程里的CASE语句不能有ELSENULL子句,并且用ENDCASE替代END来终止。,CASEWHENexpr_conditionTHENstatement_listWHENexpr_conditionTHENstatement_listELSEstatement_listENDCASE;,6.2存储过程的创建,6.2.5流程控制的使用3、LOOP语句LOOP循环语句用来重复执行某些语句,与IF和CASE语句相比,LOOP只是创建一个循环操作的过程,并不进行条件判断。LOOP内的语句一直重复执行直到跳出循环语句。LOOP语句的基本格式如下:,loop_label:LOOPstatement_listENDLOOPloop_label,上述语法格式中,loop_label表示LOOP语句的标注名称,该参数可以省略;statement_list表示需要循环执行的语句。,6.2存储过程的创建,6.2.5流程控制的使用【例6-8】使用LOOP语句进行循环操作,具体代码如下:例中,循环执行了id加1的操作。当id值小于10时,循环重复执行;当id值大于或者等于10时,使用LEAVE语句退出循环。,DECLAREidINTDEFAULT0;add_loop:LOOPSETid=id+1;IFid=10THENLEAVEadd_loop;ENDIF;ENDLOOPadd_loop;,6.2存储过程的创建,6.2.5流程控制的使用4、LEAVE语句LEAVE语句用于退出任何被标注的流程控制构造。LEAVE语句基本语法格式如下:在上述语法结构中,label表示循环的标志。通常情况下,LEAVE语句与BEGINEND、循环语句一起使用。,LEAVElable,6.2存储过程的创建,6.2.5流程控制的使用5、ITERATE语句ITERATE的意思是再次循环,ITERATE语句用于将执行顺序转到语句段的开头处。ITERATE语句的基本语法格式如下:需要注意的是,ITERATE语句只可以出现在LOOP、REPEAT和WHILE语句内。,ITERATElable,6.2存储过程的创建,6.2.5流程控制的使用【例6-9】演示了ITERATE语句在LOOP语句内的使用,具体代码如下:,CREATEPROCEDUREdoiterate()BEGINDECLAREp1INTDEFAULT0;my_loop:LOOPSETp1=p1+1;IFp120THENLEAVEmy_loop;ENDIF;SELECTp1isbetween10and20;ENDLOOPmy_loop;END,6.2存储过程的创建,6.2.5流程控制的使用6、REPEAT语句REPEAT语句用于创建一个带有条件判断的循环过程,每次语句执行完毕之后,会对条件表达式进行判断,如果表达式为真,则循环结束;否则重复执行循环中的语句。REPEAT语句的基本语法格式如下:,repeat_lable:REPEATstatement_listUNTILexpr_conditionENDREPEATrepeat_lable,6.2存储过程的创建,6.2.5流程控制的使用【例6-10】演示使用REPEAT语句执行循环过程,具体代码如下:,DECLAREidINTDEFAULT0;REPEATSETid=id+1;UNTILid=10;ENDREPEAT;,6.2存储过程的创建,6.2.5流程控制的使用7、WHILE语句WHILE语句创建一个带条件判断的循环过程,与REPEAT不同的是,WHILE在语句执行时,先对指定的表达式进行判断,如果为真,则执行循环内的语句,否则退出循环。REPEAT语句的基本语法格式如下:,while_lable:WHILEexpr_conditionDOStatement_listENDWHILEwhile_lable,在上述语法格式中,while_lable为WHILE语句的标注名称;expr_condition为进行判断的表达式,如果表达式结果为真,WHILE语句内的语句或语句群被执行,直至expr_condition为假,退出循环,6.2存储过程的创建,6.2.5流程控制的使用【例6-11】演示了使用WHILE语句进行循环操作,具体代码如下:,DECLAREiINTDEFAULT0;WHILEi10DOSETi=i+1;ENDWHILE;,6.3存储过程的使用,6.3.1调用存储过程存储过程必须使用CALL语句调用,并且存储过程和数据库相关,如果要执行其他数据库中的存储过程,需要指定数据库名称。调用存储过程的语法格式如下:上述语法格式中,sp_name为存储过程的名称,parameter为存储过程的参数。,CALLsp_name(parameter,),6.3存储过程的使用,6.3.1调用存储过程【例6-12】定义一个名为CountProc1的存储过程,然后调用这个存储过程,具体操作如下:1、定义存储过程:2、调用存储过程:,6.3存储过程的使用,6.3.1调用存储过程3、查看返回结果:,6.3存储过程的使用,6.3.2查看存储过程1、SHOWSTATUS语句查看存储过程的状态使用SHOWSTATUS语句查看,基本语法结构如下:上述语法格式中,PROCEDURE和FUNCTION分别表示查看存储过程和函数,LIKE语句表示匹配的名称。,CALLsp_name(parameter,),6.3存储过程的使用,6.3.2查看存储过程【例6-13】SHOWSTATUS语句的示例代码如下:代码执行如下:,SHOWPROCEDURESTATUSLIKEC%G,6.3存储过程的使用,6.3.2查看存储过程2、SHOWCREATE语句查看存储过程的状态使用SHOWCREATE语句查看,基本语法格式如下:,SHOWCREATEPROCEDURE|FUNCTIONsp_name,6.3存储过程的使用,6.3.2查看存储过程【例6-14】SHOWCREATE语句的示例代码如下:代码执行如下:,SHOWCREATEPROCEDUREchapter06.CountProc1G,6.3存储过程的使用,6.3.2查看存储过程3、从information_schema.Routines表中查看存储过程的信息在MySQL中存储过程和函数的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校气象园管理制度
- 学校维修处管理制度
- 学校防泄漏管理制度
- 学生灶员工管理制度
- 学院水电科管理制度
- 安全标识与管理制度
- 安宁照护室管理制度
- 安置点卫生管理制度
- 定制化班组管理制度
- 实施清单化管理制度
- 学校五年发展规划2026-2030年
- 2025年江西省中考学业水平考试考前预测数学试卷(含答案)
- 2024小学体育教师进城考试模拟试卷及参考答案
- 瘢痕疙瘩术后护理
- 2024-2025学年部编版一年级下学期期末语文试卷(含答案)
- 惠然科技有限公司半导体量测设备总部项目环评资料环境影响
- 2025年河北省青县事业单位公开招聘卫生岗考前冲刺题带答案
- 高空证考试题及答案
- 《营养指南课件:食品标签与营养成分解读》
- 2026年中考英语复习必背新课标词汇单词表(精校打印)
- 北京市东城区2023-2024学年五年级下学期语文期末试卷(含答案)
评论
0/150
提交评论