《mysql学习心得之存储过程_1》由会员分享,可在线阅读,更多相关《mysql学习心得之存储过程_1(8页珍藏版)》请在金锄头文库上搜索。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解MySql学习心得之存储过程先来看段mysql查询文章回复语句:代码如下:#查询文章回复-Procedurestructureforsp_select_reply_article-DROPPROCEDUREIFEXISTSsp_select_reply_article;DELIMITER;CREATEDEFINER=rootlocalhostPROCEDUREsp_select_reply_article(INra_idint,INpagefromint,
2、INpagesizeint)BEGIN#Routinebodygoeshere.SETra_id=ra_id;SETpagefrom=pagefrom;SETpagesize=pagesize;SETssra=CONCAT(SELECT*FROMgk_articleWHEREid=?LIMIT?,?);PREPAREsqlqueryFROMssra;EXECUTEsqlqueryUSINGra_id,pagefrom,pagesize;ENDDELIMITER;#技术点1:MySql5.1不支持LIMIT参数(MySql5.5就支持了),如果编写存储过程时使用LIMIT做变量,那是需要用动态S
3、QL来构建的,而这样做性能肯定没有静态SQL好。主要代码如下:代码如下:SETssra=CONCAT(SELECT*FROMgk_articleWHEREid=?LIMIT?,?);PREPAREsqlqueryFROMssra;EXECUTEsqlqueryUSINGra_id,pagefrom,pagesize;#技术点2:如果同时需要返回受影响行数需要在语句后面添加语句:ROW_COUNT()函数,两条语句之间需要“;”分隔。代码如下:#更新数据-Procedurestructureforsp_update_permission-DROPPROCEDUREIFEXISTSsp_updat
4、e_permission;DELIMITER;CREATEDEFINER=rootlocalhostPROCEDUREsp_update_permission(INpuser_uidvarchar(20),INplevelint,INppowerint)BEGIN#Routinebodygoeshere.SETpuser_uid=puser_uid;SETplevel=plevel;SETppower=ppower;UPDATEgk_permissionSETlevel=plevel,power=ppowerWHEREuser_uid=CONVERT(puser_uidUSINGutf8)CO
5、LLATEutf8_unicode_ci;ENDDELIMITER;#技术点3:MySQL进行字符串比较时发生错误(Illegalmixofcollations(utf8_unicode_ci,IMPLICIT)and(utf8_general_ci,IMPLICIT)foroperation=),解决方法:将比较等式一边进行字符串转换,如改为“CONVERT(b.fullCodeUSINGutf8)COLLATEutf8_unicode_ci”,主要代码如下:代码如下:UPDATEgk_permissionSETlevel=plevel,power=ppowerWHEREuser_uid=C
6、ONVERT(puser_uidUSINGutf8)COLLATEutf8_unicode_ci;代码如下:#插入数据-Procedurestructureforsp_insert_user-DROPPROCEDUREIFEXISTSsp_insert_user;DELIMITER;CREATEDEFINER=rootlocalhostPROCEDUREsp_insert_user(INuidvarchar(20),INupwvarchar(32),INnamevarchar(20),INsexint,INphonevarchar(20),INu_idint,INs_idint,INj_idi
7、nt)BEGIN#Routinebodygoeshere.SETuid=uid;SETupw=upw;SETuname=uname;SETsex=sex;SETphone=phone;#由于外键约束,所以添加的外键字段需要在对应外键所在表有相应数据SETu_id=u_id;SETs_id=s_id;SETj_id=j_id;SETverifytime=DATE(0000-00-00);INSERTINTOgk_user(uid,upw,uname,sex,phone,u_id,s_id,j_id,verifytime)VALUES(uid,upw,uname,sex,phone,u_id,s_
8、id,j_id,verifytime);#查询结果会自动返回受影响行数ENDDELIMITER;代码如下:#根据ID删除数据-Procedurestructureforsp_delete_exchange_by_id-DROPPROCEDUREIFEXISTSsp_delete_exchange_by_id;DELIMITER;CREATEDEFINER=rootlocalhostPROCEDUREsp_delete_exchange_by_id(INeidint)BEGIN#Routinebodygoeshere.SETeid=eid;DELETEFROMgk_exchangeWHEREid
9、=eid;ENDDELIMITER;代码如下:#通过账号查询用户或者管理员-Procedurestructureforsp_select_user_by_uid-DROPPROCEDUREIFEXISTSsp_select_user_by_uid;DELIMITER;CREATEDEFINER=rootlocalhostPROCEDUREsp_select_user_by_uid(INuidvarchar(20),INgetAdminint)BEGIN#Routinebodygoeshere.SETuid=uid;#SETgetadmin=getAdmin;#查询管理员IF(getAdmin=
10、1)THENSELECTus.*,un.name,se.name,jo.name,pe.level,pe.powerFROMgk_userASus,gk_unitASun,gk_sectionASse,gk_jobtitleASjo,gk_permissionASpeWHEREus.u_id=un.idANDus.s_id=se.idANDus.j_id=jo.idANDus.uid=pe.user_uidANDus.uid=CONVERT(uidUSINGutf8)COLLATEutf8_unicode_ci;ENDIF;#查询用户IF(getAdmin=0)THENSELECTus.*,u
11、n.name,se.name,jo.nameFROMgk_userASus,gk_unitASun,gk_sectionASse,gk_jobtitleASjoWHEREus.u_id=un.idANDus.s_id=se.idANDus.j_id=jo.idANDus.uid=CONVERT(uidUSINGutf8)COLLATEutf8_unicode_ci;ENDIF;ENDDELIMITER;#技术点4:这个存数过程需要用到控制语句(ifelseelseifwhilelooprepeatleaveiterate)。代码如下:IF(getAdmin=1)THEN#语句ENDIF;#技术点5:在传入参数不匹配的情况下报错(Columncountdoesntmatchvaluecountatrow1),这个就是细心问题了,详细检查参数吧。#技术点6:获取当前时间的函数:NOW()#技术点7:“”这个符号是反单引号,两个反单引号夹起来的会被当做变量,一般是在定义字段时遇到关键字冲突的时候会用到。对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表