´æ´¢¹ý³ÌµÄÌØµã
¡¡¡¡SybaseµÄ´æ´¢¹ý³ÌÊǼ¯Öд洢ÔÚSQL ServerÖеÄÔ¤Ïȶ¨ÒåÇÒÒѾ±àÒëºÃµÄÊÂÎñ¡£´æ´¢¹ý³ÌÓÉSQLÓï¾äºÍÁ÷³Ì¿ØÖÆÓï¾ä×é³É¡£ËüµÄ¹¦ÄܰüÀ¨:½ÓÊܲÎÊý;µ÷ÓÃÁíÒ»¹ý³Ì;·µ»ØÒ»¸ö״ֵ̬¸øµ÷Óùý³Ì»òÅú´¦Àí,ָʾµ÷Óóɹ¦»òʧ°Ü;·µ»ØÈô¸É¸ö²ÎÊýÖµ¸øµ÷Óùý³Ì»òÅú´¦Àí,Ϊµ÷ÓÃÕßÌṩ¶¯Ì¬½á¹û;ÔÚÔ¶³ÌSQL ServerÖÐÔËÐеȡ£
¡¡¡¡
¡¡¡¡´æ´¢¹ý³ÌµÄÐÔÄÜÌØµãÈçÏÂ:
¡¡¡¡·´æ´¢¹ý³ÌÊÇÔ¤±àÒë¹ýµÄ,Õâ¾ÍÒâζ×ÅËüÓëÆÕͨµÄSQLÓï¾ä»òÅú´¦ÀíµÄSQLÓï¾ä²»Í¬,µ±Ê×´ÎÔËÐÐÒ»¸ö´æ´¢¹ý³Ìʱ,SQL ServerµÄ²éѯ´¦ÀíÆ÷¶ÔÆä½øÐзÖÎö,ÔÚÅųýÁËÓï·¨´íÎóÖ®ºóÐγɴ洢ÔÚϵͳÖеĿÉÖ´Ðз½°¸¡£ÓÉÓÚ²éѯ´¦ÀíµÄ´ó²¿·Ö¹¤×÷ÒѾÍê³É,ËùÒÔ´æ´¢¹ý³ÌÖ´ÐÐËٶȺܿ졣
¡¡¡¡·´æ´¢¹ý³ÌºÍ´ý´¦ÀíµÄÊý¾Ý¶¼·ÅÔÚͬһ̨ÔËÐÐSQL ServerµÄ¼ÆËã»úÉÏ,ʹÓô洢¹ý³Ì²éѯµ±µØµÄÊý¾Ý,ЧÂÊ×ÔÈ»ºÜ¸ß¡£
¡¡¡¡·´æ´¢¹ý³ÌÒ»°ã¶àÓÉClient¶Ëͨ¹ý´æ´¢¹ý³ÌµÄÃû×Ö½øÐе÷ÓÃ,¼´¿çÍø´«Ë͵ÄÖ»ÊÇ´æ´¢¹ý³ÌµÄÃû×Ö¼°ÉÙÁ¿µÄ²ÎÊý(Èç¹ûÓеϰ),¶ø²»Êǹ¹³É´æ´¢¹ý³ÌµÄÐí¶àSQLÓï¾ä,Òò´Ë¿ÉÒÔ¼õÉÙÍøÂç´«ÊäÁ¿,¼Ó¿ìϵͳÏìÓ¦ËÙ¶È¡£
¡¡¡¡·´æ´¢¹ý³Ì»¹ÓÐ×ÅÈçͬCÓïÑÔ×Óº¯ÊýÄÇÑùµÄ±»µ÷Óúͷµ»ØÖµµÄ·½±ãÌØÐÔ¡£
¡¡¡¡ËùÒÔ,´æ´¢¹ý³Ì´ó´óÔöÇ¿ÁËSQLÓïÑԵŦÄÜ¡¢Ð§ÂʺÍÁé»îÐÔ¡£ÕÆÎÕºÍÓ¦Óúô洢¹ý³Ì,¶Ô½øÒ»²½·¢»ÓSybaseÊý¾Ý¿âϵͳµÄÇ¿´ó¹¦ÄÜÓÐ×ÅÖØÒªµÄÒâÒå¡£
¡¡¡¡
¡¡¡¡´æ´¢¹ý³ÌµÄÓï·¨¹æÔò
¡¡¡¡½¨Á¢´æ´¢¹ý³ÌµÄÓï·¨¹æÔòΪ:
¡¡¡¡CREATE PROCedure[owner.]procedurename[;number]
¡¡¡¡[[(]@parameter_name datatype[=default][OUTput]
¡¡¡¡[,@parameter_name datatype[=default][OUTput]]...[)]]
¡¡¡¡[WITH RECOMPILE]
¡¡¡¡AS SQL_statements
¡¡¡¡Ê¹Óô洢¹ý³ÌµÄÓï·¨¹æÔòΪ:
¡¡¡¡[EXECute][@return-status=]
¡¡¡¡[[[server.]database.]owner.]procedurename[;number]
¡¡¡¡[[@parameter_name=]value¦[@parameter_name=]@varialbe[OUTput]
¡¡¡¡[,[@parameter_name=]value¦[@parameter_name=]@variable[OUTput]...]]
¡¡¡¡[WITH RECOMPILE]
¡¡¡¡ÏÂÃæ¼òÒª½éÉÜÕâÁ½¸öÃüÁîµÄ³£ÓÃÑ¡ÏîÒÔ¼°½¨Á¢ºÍʹÓô洢¹ý³ÌµÄÒªµã,¹ØÓÚÑ¡ÏîµÄ¸üΪÏêϸµÄ˵Ã÷Çë²Î¿¼ÓйØÊֲᡣ
¡¡¡¡·[[[server.]database.]owner.]procedure_name:´æ´¢¹ý³ÌµÄÃû×Ö¡£
¡¡¡¡·@parameter_name datatype[=default][OUTput]:ÐÎʽ²ÎÊý(ÐβÎ)µÄÃû³Æ¡¢ÀàÐÍ¡£df aultÊǸ³ÓèµÄȱʡֵ(¿ÉÑ¡),OUTputÖ¸¶¨±¾²ÎÊýΪÊä³ö²ÎÊý(¿ÉÑ¡)¡£ÐβÎÊÇ´æ´¢¹ý³ÌÖеÄ×Ô±äÁ¿,¿ÉÒÔÓжà¸ö,Ãû×Ö±ØÐëÒÔ@´òÍ·,×30¸ö×Ö·û¡£
¡¡¡¡·SQL_statements:¶¨Òå´æ´¢¹ý³Ì¹¦ÄܵÄSQLÓï¾ä¡£
¡¡¡¡·@return_status:½ÓÊÜ´æ´¢¹ý³Ì·µ»Ø×´Ì¬ÖµµÄ±äÁ¿¡£
¡¡¡¡·[@parameter_name=]value:ʵ¼Ê²ÎÊý(ʵ²Î),@parameter_nameΪʵ²ÎµÄÃû³Æ(¿ÉÑ¡)¡£Èç¹ûij¸öʵ²ÎÒÔ@parameter_name=valueÌṩ,ÄÇÃ´ËæºóµÄʵ²ÎÒ²¶¼Òª²ÉÓÃÕâÒ»ÐÎʽÌṩ¡£
¡¡¡¡·[@parameter_name=]@varialbe[OUTput]:½«±äÁ¿@varialbeÖеÄÖµ×÷Ϊʵ²Î´«µÝ¸øÐβÎ@parameter_name(¿ÉÑ¡),Èç¹û±äÁ¿@varialbeÊÇÓÃÀ´½ÓÊÜ·µ»ØµÄ²ÎÊýÖµ,ÔòÑ¡ÏîOUTput²»¿ÉȱÉÙ¡£
¡¡¡¡
¡¡¡¡´æ´¢¹ý³ÌµÄ½¨Á¢ºÍʹÓÃ,ÎÒÃǽ«Í¨¹ý¼¸¸öÀý×Ó½øÐнéÉÜ¡£
¡¡¡¡¼ÙÉèÓÐÒ»¸öÓÃÏÂÊöÓï¾äÉú³ÉµÄ¼¼Äܹ¤×ʱíRS-LS-GZ-JiNeng:
¡¡¡¡create table RS_LS_GZ_JiNeng¡¡¡¡¡¡¡¡ /*¼¼Äܹ¤×ʱí*/
¡¡¡¡(GeRen_id char(4),¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /*¸öÈË´úÂë */
¡¡¡¡RiQi smalldatetime,¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /*Ö´ÐÐÈÕÆÚ */
¡¡¡¡YuanYin_id char(1) null,¡¡¡¡¡¡¡¡¡¡¡¡ /*±ä¶¯ÔÒò´úÂë */
¡¡¡¡JinE smallmoney)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ /*¼¼Äܹ¤×ʽð¶î */
¡¡¡¡¸Ã±í´æ´¢×Åijµ¥Î»Ô±¹¤¶àÄêÀ´¼¼Äܹ¤×ʵÄÀúÊ·µµ°¸¡£
¡¡¡¡Àý1.Èç¹ûÒª²éѯȫÌåÔ±¹¤µÄ¼¼Äܹ¤×ʱ䶯ÀúÊ·,Ôò¿ÉÏȽ¨Á¢Ò»¸ö´æ´¢¹ý³Ìp-RsGz-JiNeg-All:
¡¡¡¡create procedure p_RsGz_JiNeng_All as
¡¡¡¡select *
¡¡¡¡from RS_LS_GZ_JiNeng
¡¡¡¡order by GeRenid,RiQi
¡¡¡¡È»ºóÓÃÅú´¦ÀíÓï¾äµ÷Óô洢¹ý³Ìp_RsGz_JiNeng_All½øÐвéѯ:
¡¡¡¡execute p_RsGz_JiNeng_All
¡¡¡¡±¾ÀýÖ»ÏÔʾ²éѯµ½µÄÊý¾Ý,ÎÞÊäÈë¡¢Êä³ö²ÎÁ¿,ÊÇ×î¼òµ¥µÄÒ»¸ö´æ´¢¹ý³Ì¡£
¡¡¡¡Àý2.Èç¹ûÒª²éѯijÈ˼¼Äܹ¤×ʵı䶯ÀúÊ·,¿É½¨Á¢ÁíÒ»¸ö´æ´¢¹ý³Ìp_RsGz_JiNeng:
¡¡¡¡create procedure p_RsGz_JiNeng @c_GeRenId char(4)
¡¡¡¡as
¡¡¡¡select *from RS_LS_GZ_JiNeng
¡¡¡¡where GeRen_id=@c_GeRenId
¡¡¡¡order by RiQi
¡¡¡¡Ö®ºóÓÃÅú´¦ÀíÓï¾äµ÷Óô洢¹ý³Ìp_Rs_Gz_JiNeng½øÐвéѯ:
¡¡¡¡declare @GeRenId char(4)
¡¡¡¡select @GeRenId="0135" /*ÉèÒª²éѯԱ¹¤µÄ¸öÈË´úÂëΪ"0135" */
¡¡¡¡execute p_RsGz_JeNeng @c_GeRenId=@GeRenId
¡¡¡¡´æ´¢¹ý³Ìp_RsGz_JiNengÖж¨ÒåÁËÒ»¸öÐβÎ@c_GeRenId,ÊÇ×Ö·ûÐͱäÁ¿¡£ÔÚµ÷Óøùý³ÌµÄÅú´¦ÀíÖÐ,¼È¿ÉÒÔÓþßÌåµÄÖµÒ²¿ÉÒÔÓñäÁ¿×÷Ϊʵ²Î¡£ÓñäÁ¿×÷ʵ²Î(Èç±¾Àý)ʱ,±ØÐëÓÃdel areÓï¾ä¼ÓÒÔ˵Ã÷¡£ÖµµÃ×¢ÒâµÄÊÇ,ÔÚÅú´¦ÀíµÄµ÷Óùý³ÌÓï¾äÖÐ,@c_GeRenId=@GeRenIdÖеÄ@ c_GeRenIdÊÇ´æ´¢¹ý³Ìp_RsGz_JiNengÖеÄÐβÎÃû,²»ÊÇÅú´¦ÀíÖеıäÁ¿,ËùÒÔ²»Äܽ«ËüÁÐÈëd eclareÓï¾äµÄ±äÁ¿µ¥ÖС£
¡¡¡¡Àý3.Èç¹ûÒª¼ÆËãµ±Ô¹¤×Ê,¾Í±ØÐë´Ó¹¤×ÊÀúÊ·Öвé³öÔ±¹¤¾àÀ뵱ǰ×î½üµÄÒ»´Î¼¼Äܹ¤×ʱ䶯µÄ½á¹û:
¡¡¡¡create procedure p_RsGz_JiNeng_Slt
¡¡¡¡(@c_GeRenId char(4),@sm_JinE smallmoney output)
¡¡¡¡as
¡¡¡¡select @sm_JinE=JinE
¡¡¡¡from RS_LS_GZ_JiNeng
¡¡¡¡where RiQi=(select max(RiQi)
¡¡¡¡from RS_LS_GZ_JiNeng
¡¡¡¡where GeRenid=@c-GeRenId)/*ÕÒ³öÀúÊ·¼Ç¼ÖоàÀ뵱ǰ×î½üµÄÈÕÆÚ*/
¡¡¡¡µ÷Óô洢¹ý³Ìp_RsGz_JiNeng_Slt½øÐвéѯ:
¡¡¡¡declare @GeRenId char(4),@JinE smallmoney
¡¡¡¡select @GeRenid="0135"/*ÉèÒª²éѯԱ¹¤µÄ¸öÈË´úÂëΪ"0135"*/
¡¡¡¡select @JinE=0
¡¡¡¡execute p_RsGz_JiNeng_slt @c_GeRenId=@GeRenId,@sm_JinE=@ JinE output
¡¡¡¡ÕâÀï,±äÁ¿ @JinEÓÃÀ´´æ´¢¹ý³ÌÐβÎ@sm_JinE´«»ØµÄ½ð¶î¡£ÔÚµ÷Óùý³ÌÓï¾äÖÐ,@sm_JiE = @JinE outputÖеÄoutput²»¿ÉÊ¡ÂÔ¡£·ñÔò,±äÁ¿@JinE½«µÃ²»µ½Ðβδ«»ØµÄÊýÖµ¶øÊ¼ÖÕΪÁã(µÈÓÚ³õÖµ)¡£
¡¡¡¡Àý4.²éµ½Á˸öÈË´úÂëΪ"0135"Ô±¹¤µÄ¼¼Äܹ¤×ʾÍÏÔʾÆäÀúÊ·¼Í¼,²é²»µ½ÔòÏÔʾһÌõ³ö´íÐÅÏ¢¡£
¡¡¡¡create procedure p_RsGz_JiNeng_Rtn
¡¡¡¡@c_GeRenId char(4)
¡¡¡¡as
¡¡¡¡declare @ErrCode smallint
¡¡¡¡select @ErrCode=0
¡¡¡¡if exists(select* from RS-LS-GZ-JiNeng
¡¡¡¡ where GeRenid=@c-GeRenId)
¡¡¡¡ begin
¡¡¡¡¡¡¡¡select *
¡¡¡¡¡¡¡¡from RS_LS_GZ_JiNeng
¡¡¡¡¡¡¡¡whrer GeRen_id=@c_GeRenId
¡¡¡¡¡¡¡¡order by RiQi
¡¡¡¡¡¡¡¡return @ErrCode
¡¡¡¡ end
¡¡¡¡esle
¡¡¡¡ begin
¡¡¡¡¡¡¡¡select @ErrCode=1
¡¡¡¡¡¡¡¡return @ErrCode
¡¡¡¡ end
¡¡¡¡µ÷Óô洢¹ý³Ìp_RsGz_JiNeng_Rtn:
¡¡¡¡declare @GeRenId char(4),@RtnCode smallint
¡¡¡¡select @GeRenId="0135"
¡¡¡¡select @RtnCode=0
¡¡¡¡execute @RtnCode=p_RsGz_JiNeng_Rtn @c_GeRenId=@GeRenId
¡¡¡¡if @RtnCode=1
¡¡¡¡ print"No this one!"
¡¡¡¡´æ´¢¹ý³Ìp_RsGz_JiNeng_RtnÏòµ÷ÓÃÕß·µ»ØÒ»¸ö´æ´¢ÔÚ±äÁ¿@ErrCodeÀïµÄÖµ,Õâ¸öÖµ±»³ÆÎª×´Ì¬Öµ,ËüÏòµ÷ÓÃÕß·´Ó³´æ´¢¹ý³ÌÖ´ÐеijɰÜ״̬¡£ÔÚ±¾ÀýÖÐ,Èç¹û²é²»µ½Ö¸¶¨Ô±¹¤¼¼Äܹ¤×ʵÄÈκμǼʱ,¾ÍÈÏΪ"²éÎÞ´ËÈË",·µ»Ø³ö´í״ֵ̬1¡£·ñÔò,·µ»Ø³É¹¦×´Ì¬Öµ0¡£
¡¡¡¡µ÷Óùý³ÌµÄÅú´¦ÀíÓï¾äʹÓñäÁ¿@RtnCode´æ´¢·µ»ØµÄ״ֵ̬,Ò»µ©¼ì³ö´æ´¢¹ý³Ìp_RsG_ JiNeng_Rtn·µ»ØÁË´íÎó±êÖ¾(@RtnCode=1),¾ÍÏÔʾһÌõÐÅÏ¢"No this one!"¡£
¡¡¡¡Ð¡½á
¡¡¡¡ÉÏÊöËĸöÀý×Ó¼òÒª½éÉÜÁË´æ´¢¹ý³Ì³£Óõļ¸ÖÖÐÎʽ,´ÓÖÐÎÒÃÇÒѾ¿ÉÒÔÁìÂÔµ½ËüµÄ±à³ÌÌØÉ«ÒÔ¼°Ê¹ÓÃÉϵÄÁé»îÐԺͷ½±ãÐÔ¡£
¡¡¡¡ËäÈ»ÉÏÊöÀý×ÓÔÚµ÷Óô洢¹ý³Ìʱ¶¼ÊÇÓÃSQLµÄÅú´¦ÀíÓï¾äʵÏÖµÄ,µ«²¢²»Òâζ×ÅÕâÊÇΨһµÄ·½·¨¡£ÀýÈçÔÚ´æ´¢¹ý³ÌÖе÷Óô洢¹ý³Ì(¼´Ëùν¹ý³ÌǶÌ×)µÄÏÖÏó¾ÍºÜ³£¼û¡£ÁíÍâ,ÔÚÆäËüSybaseÊý¾Ý¿â¿ª·¢ÏµÍ³ (ÈçPowerBuilder)µÄ scriptÓï¾äÖе÷ÓÃSybaseµÄ´æ´¢¹ý³ÌÒ²·Ç³£ÆÕ±é¡£

