ΪPL/SQL°ü´´½¨ActiveX ·þÎñ

January 6th, 2009
¡¡¡¡µ÷ÕûÊý¾Ý¿âÓ¦ÓóÌÐòµÄÒ»¸ö¾­Ñé·½·¨ÊÇ¡°80%Ó¦ÓóÌÐò£¬20%Êý¾Ý¿â¡±¡£Òâ˼ÊÇ˵£¬Æ½¾ùÀ´Ëµ£¬¿ª·¢ÈËÔ±¿ÉÒÔͨ¹ýÐÞ¸ÄÊý¾Ý¿â²ÎÊýµ÷Õû20%µÄÐÔÄÜÎÊÌ⣬ͨ¹ýµ÷ÕûÓ¦ÓóÌÐòÉè¼ÆºÍÂß¼­µ÷½Ú80%µÄÐÔÄÜÎÊÌâ¡£
¡¡¡¡
¡¡¡¡È»¶ø£¬¿ª·¢ÈËÔ±Ê×ÏÈÏëµ½µÄÊǰ´ÕÕÊÖ²áÉϵÄÀý×Ó¿ªÊ¼½«Êý¾Ý¿âÂß¼­Ö±½Ó±àÂëµ½ËûÃǵĴúÂëÖС£ÕâÖÖ×ö·¨»á´øÀ´ºÜ¸ßµÄά»¤³É±¾£»¶ÔÊý¾Ý¿âÂß¼­µÄÒ»´¦±ä¶¯»òÕßÇл»µ½Ò»¸ö²»Í¬µÄÊý¾Ý¿âÇý¶¯¾Í¿ÉÄÜÐèÒªºÜ¶à¸öÖÓÍ·ÔÚ´úÂëÖÐÐÞÕýËü¡£´ÓÔ´´úÂëµ÷ÊÔÆ÷Íâ·ÖÎöÐÔÄÜÒ²±äµÃ±È½ÏÀ§ÄÑ¡£
¡¡¡¡
¡¡¡¡Ò»¸ö±È½ÏºÃµÄ·½·¨ÊÇÊý¾Ý¿â·þÎñÆ÷¿´³ÉÊÇÒ»¸öÕæÕýµÄ·þÎñÆ÷¡ª¡ªÕâ¸ö·þÎñÆ÷ÌṩÍêÈ«Óë´úÂëÂß¼­·ÖÀëµÄÒ»×éÒµÎñÂß¼­·þÎñ¡£ÕâÑù¾ÍÔÊÐíÔÚ¸½¼Ó´úÂë֮ǰÔÚ´úÂëÍⲿ²âÊÔºÍά»¤ÕâЩ·þÎñ¡£Ó¦ÓóÌÐòÓÀÔ¶¶¼²»Ó¦¸ÃÖªµÀÓÐÕâÑùÒ»¸ö¶«Î÷£¬±ÈÈçÒ»¸ö EMP ±í£¬Ö»ÓÐÕâÑù²Å»áÓÐijЩÀàÐ͵ĽӿڿÉÒÔ±»·ÃÎÊ£¬´Ó¶ø¡°ÕÒ³öÓжàÉÙÖ°Ô±¡±ºÍ¡°¸øÌض¨µÄÖ°Ô±¼Ó¹¤×Ê¡±¡£ÔÚ32λ Windows ÖУ¬Îª±à³ÌÓïÑÔÌṩͨÓýӿڵÄÖ÷Òª·½·¨ÊÇͨ¹ý ActiveX ·þÎñÆ÷»ò COM ·þÎñÆ÷¡£ÓÐһЩ DLL »ò¿ÉÖ´ÐÐÎļþΪºÜ¶à±à³Ì»·¾³Ìṩһ¸ö½Ó¿ÚºÍһЩ·þÎñ¡£±àд ActiveX ×é¼þͨ³£ÊÇÒ»¸öʹÈËηËõµÄÈÎÎñ£¬¶øÇÒÔÚÊý¾Ý¿â½Ó¿Ú±ä»¯Ê±£¬¸ÃÈÎÎñ¿ÉÄÜÐèÒª³ÖÐøµÄά»¤¡£
¡¡¡¡
¡¡¡¡¶ÔÓÚ Visual Basic 6.0 ³ÌÐòÔ±À´Ëµ£¬Oracle Objects for OLE Code Wizard for Visual Basic Äܹ»Ê¹ÕâÒ»ÈÎÎñ¸ü¼Ó¼òµ¥¡£Ê¹ÓÃÕâ¸öÏòµ¼£¬Äã¿ÉÒÔΪ¿ª·¢ÈËÔ±´´½¨Ò»¸ö ActiveX ×é¼þ½«Êý¾Ý¿â´úÂë°ü×°ÆðÀ´¡ª¡ª´Ó¶ø²»ÓñàдºÜ¶àVisual Basic ´úÂë¡£
¡¡¡¡
¡¡¡¡Èç¹ûÔÚ°²×° Oracle Êý¾Ý¿â֮ǰÒѾ­°²×°ÁË Visual Basic£¬ÄÇôÄã»á·¢ÏÖÔÚ Add-Ins ²Ëµ¥Ñ¡ÏîÖжàÁËÒ»¸öÏòµ¼¡£Èç¹ûÄãÊǰ²×° Oracle Êý¾Ý¿âÖ®ºó²Å°²×°µÄ Visual Basic£¬ÄÇôÄãÐèҪע²á Code Wizard DLL È¥ÆôÓÃÕâ¸ö²Ëµ¥ÌØÐÔ¡£´ÓORACLE_HOME/bin Ŀ¼ÏÂÔËÐÐÏÂÃæÕâЩÃüÁ
¡¡¡¡
¡¡¡¡regsvr32.exe oo4ocodewiz.dll
¡¡¡¡regsvr32.exe odbtreeview.ocx
¡¡¡¡regsvr32.exe oo4oaddin.dll
¡¡¡¡
¡¡¡¡ÒªÔËÐÐÕâ¸öÏòµ¼£¬´ÓÖ÷²Ëµ¥ÖÐÑ¡Ôñ Add-Ins£¬È»ºóÑ¡ÔñÆäÖеÄOO4O Code Wizard For Stored Procedures¡£ÔÚµÚÒ»´ÎÔËÐÐÏòµ¼Ê±£¬Ëü»áÒªÇóÄãµÇ¼µ½Ò»¸öÊý¾Ý¿â¡£ÔڵǼµ½Êý¾Ý¿âÖ®ºó£¬Äã¿ÉÒÔÑ¡ÔñOracle DB£¬È»ºó´ÓÒ»¸ö°üÁбíÖÐÑ¡ÔñÒ»¸öÊý¾Ý¿â°ü¡£¸ÃÏòµ¼½«Î§ÈÆÄãËùÑ¡ÔñµÄ°üÖеĺ¯ÊýºÍ¹ý³Ì´´½¨ OO4O ´úÂë¡£
¡¡¡¡
¡¡¡¡ÀýÈ磬ÎÒÐèҪΪÎÒµÄÊý¾Ý¿â°ü´´½¨Ò»¸ö ActiveX DLL ·þÎñÆ÷¿Ø¼þ¡£Ê×ÏÈ£¬ÎÒ±àдÕâ¸öÊý¾Ý¿â°üÀ´´¦ÀíÎÒµÄÒµÎñ·þÎñ£º
¡¡¡¡
¡¡¡¡REM -- create a package to encapsulate business services for employees
¡¡¡¡create or replace package empsvc
¡¡¡¡is
¡¡¡¡ function get_count return integer;
¡¡¡¡ procedure give_raise(empno integer,amount number);
¡¡¡¡end empsvc;
¡¡¡¡/
¡¡¡¡show errors;
¡¡¡¡
¡¡¡¡create or replace package body empsvc
¡¡¡¡is
¡¡¡¡ function get_count return integer
¡¡¡¡ is
¡¡¡¡ l_count integer;
¡¡¡¡ begin
¡¡¡¡ select count(*) into l_count from emp;
¡¡¡¡ end get_count;
¡¡¡¡ --
¡¡¡¡ procedure give_raise(empno integer,amount number)
¡¡¡¡ is
¡¡¡¡ begin
¡¡¡¡ update emp set sal = sal + amount
¡¡¡¡ where empno = empno;
¡¡¡¡ end give_raise;
¡¡¡¡end empsvc;
¡¡¡¡/
¡¡¡¡show errors;
¡¡¡¡
¡¡¡¡È»ºó£¬ÎÒ½øÈë Visual Basic 6.0 ²¢´´½¨Ò»¸ö ActiveX DLL¡£ÓÉÓÚ´´½¨µÄÊÇ ActiveX DLL£¬ËùÒÔ Visual Basic 6.0 ½«×Ô¶¯´´½¨ ActiveX ½Ó¿Ú£¬¹¹½¨ DLL£¬²¢ÔÚ Windows ²Ù×÷ϵͳÖÐ×¢²áËü¡££¨ÈκÎÐèҪʹÓÃÎÒµÄÊý¾Ý¿â°üµÄÈ˶¼¿ÉÒÔ¼òµ¥µØ´ÓËûÃÇÆ«°®µÄ OLE ä¯ÀÀÆ÷ÖÐÑ¡ÔñËü¡££©
¡¡¡¡
¡¡¡¡ÔÚ´ò¿ªÏîÄ¿ºó£¬µ÷³öÏòµ¼ºÍµÇ¼½øÈ¥£¬Ïòµ¼½«×Ô¶¯ÎªÎҵİüÉú³ÉÏÂÃæÕâ¶Î Visual Basic ´úÂ룺
¡¡¡¡
¡¡¡¡' local variable(s) to hold property value(s)
¡¡¡¡Private OraDatabase As OraDatabase 'local copy
¡¡¡¡Public Property Let database(ByVal vData As OraDatabase)
¡¡¡¡ Set OraDatabase = vData
¡¡¡¡End Property
¡¡¡¡
¡¡¡¡Public Function GET_COUNT() As Variant
¡¡¡¡ OraDatabase.Parameters.Add "result", 0, ORAPARM_OUTPUT
¡¡¡¡ OraDatabase.Parameters("result").serverType = 2
¡¡¡¡
¡¡¡¡ OraDatabase.ExecuteSQL ("declare result Number; Begin :result :=
¡¡¡¡ EMPSVC.GET_COUNT(); end;")
¡¡¡¡
¡¡¡¡
¡¡¡¡ GET_COUNT = OraDatabase.Parameters("result").Value
¡¡¡¡ OraDatabase.Parameters.Remove "result"
¡¡¡¡End Function
¡¡¡¡
¡¡¡¡Public Sub GIVE_RAISE(EMPNO As Variant, AMOUNT As Variant)
¡¡¡¡ OraDatabase.Parameters.Add "EMPNO", EMPNO, ORAPARM_INPUT, 2
¡¡¡¡ OraDatabase.Parameters.Add "AMOUNT", AMOUNT, ORAPARM_INPUT, 2
¡¡¡¡
¡¡¡¡ OraDatabase.ExecuteSQL ("Begin EMPSVC.GIVE_RAISE(:EMPNO, :AMOUNT); end;")
¡¡¡¡
¡¡¡¡
¡¡¡¡ OraDatabase.Parameters.Remove "EMPNO"
¡¡¡¡ OraDatabase.Parameters.Remove "AMOUNT"
¡¡¡¡End Sub
¡¡¡¡
¡¡¡¡ÎÒ½«É¾³ýԭʼµÄ¿ÕµÄ Class1.cls Îļþ£¬½«Ð嵀 EMPSVC.cls ÉèÖÃΪ MultiUse=Yes£¬È»ºó½«ÏîÄ¿Ãû³ÆÉèÖÃΪÎÒËùÒªÀàÐ͵ĿâÃû³Æ£¬EmpSvcLib£¬Ö®ºó¹¹½¨ DLL¡£Èç¹ûÎÒпªÒ»¸ö Visual Basic ÏîÄ¿£¬ÔÚ±©Â¶µÄ¶ÔÏóÁбíÖпÉÒÔ¿´µ½EmpSvcLib.EMPSVC¡£Èç¹ûÎÒÒýÓÃÕâ¸ö¶ÔÏó²¢ÔÚÆäÖÐÉùÃ÷Ò»¸ö±äÁ¿£¬ÎÒ¿ÉÒÔ´ÓÕâ¸ö±äÁ¿µ÷ÓÃGET_COUNT ºÍ GIVE_RAISE¡£Èç¹ûÎÒÏë´Ó C++ ÖзÃÎÊËü£¬ÎÒ¿ÉÒÔÔÚVisual Studio ¸½´øµÄ OLE Viewer Öеõ½ IDL£¬½«ÆäÌí¼Óµ½ÎÒµÄÏîÄ¿£¬È»ºóÈà Visual Studio ´´½¨ Proxy ´úÂë·ÃÎÊÊý¾Ý¿â´úÂë¡£
¡¡¡¡
¡¡¡¡ÏÂÃæÊÇ´Ó OLE Viewer Öп´µ½µÄÇ°Ãæ´úÂëµÄ IDL¡£
¡¡¡¡
¡¡¡¡// Generated .IDL file (by the OLE/COM Object Viewer)
¡¡¡¡//
¡¡¡¡// typelib filename: EmpSvcLib.dll
¡¡¡¡
¡¡¡¡[
¡¡¡¡ uuid(E137CE00-3C0B-497D-976C-C3235FF3C603),
¡¡¡¡ version(1.0),
¡¡¡¡ custom(50867B00-BB69-11D0-A8FF-00A0C9110059, 8169)
¡¡¡¡
¡¡¡¡]
¡¡¡¡library EmpSvcLib
¡¡¡¡{
¡¡¡¡ // TLib : Oracle InProc Server 4.0 Type Library : {F2D4ED20-FFD3-101A-ADF2
¡¡¡¡-04021C007002}
¡¡¡¡ importlib("oip9.tlb");
¡¡¡¡ // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
¡¡¡¡ importlib("stdole2.tlb");
¡¡¡¡
¡¡¡¡ // Forward declare all types defined in this typelib
¡¡¡¡ interface _EMPSVC;
¡¡¡¡
¡¡¡¡ [
¡¡¡¡ odl,
¡¡¡¡ uuid(BEFCB5F1-C9FE-4FCE-B18A-102E51CD8D2A),
¡¡¡¡ version(1.0),
¡¡¡¡ hidden,
¡¡¡¡ dual,
¡¡¡¡ nonextensible,
¡¡¡¡ oleautomation
¡¡¡¡ ]
¡¡¡¡ interface _EMPSVC : IDispatch {
¡¡¡¡ [id(0x68030000), propput]
¡¡¡¡ HRESULT database([in] OraDatabase* rhs);
¡¡¡¡ [id(0x60030001)]
¡¡¡¡ HRESULT GET_COUNT([out, retval] VARIANT* );
¡¡¡¡ [id(0x60030002)]
¡¡¡¡ HRESULT GIVE_RAISE(
¡¡¡¡ [in, out] VARIANT* EMPNO,
¡¡¡¡ [in, out] VARIANT* AMOUNT);
¡¡¡¡ };
¡¡¡¡
¡¡¡¡ [
¡¡¡¡ uuid(B1E44C55-EC55-473B-9235-AC7BFA79F30E),
¡¡¡¡ version(1.0)
¡¡¡¡ ]
¡¡¡¡ coclass EMPSVC {
¡¡¡¡ [default] interface _EMPSVC;
¡¡¡¡ };
¡¡¡¡};
¡¡¡¡
¡¡¡¡Èç¹ûÎÒ¾ö¶¨ÐèÒª¸Ä±äÊý¾Ý¿âÂß¼­À´×èÖ¹²»ºÏÀíµÄÇëÇ󣬱ÈÈçÇëÇóÒ»¸ö¸ºÖµµÄ¹¤×Ê»ò¶Ô¼«´óÉýнÉèÖÃÏÞÖÆ£¬ÄÇôÎÒÖ»Òª¼òµ¥µØÐÞ¸Ä PL/SQL °ü¡ª¡ªÖ»Òªº¯ÊýºÍ¹ý³ÌÔ­ÐͲ»±ä¡£Èç¹ûËüÃÇ·¢Éú±ä»¯£¬ÄÇôÎÒ¿ÉÒÔÖØÐµ÷³öÏòµ¼À´Éú³ÉÒ»¸ö¸üа汾¡£
¡¡¡¡
¡¡¡¡Èç¹ûÄã²»ÏëʹÓÃOO4O£¬Éú³ÉÓÃÓÚ ADO¡¢OLE DB »òÆäËüÊý¾Ý¿â¼Ü¹¹µÄ Visual Basic ´úÂëÒ²Ï൱¼òµ¥£¬Ö»Òª´ÓUSER_ARGUMENTS ±í²éѯº¯ÊýºÍ¹ý³Ì¶¨Òå¼´¿É¡£




#If you have any other info about this subject , Please add it free.#
êdzÆ:
ÓÊÏä:
µç»°:

ÄúµÄÁôÑÔ:


Èç¹ûÄúÓйØÓÚ ÎªPL/SQL°ü´´½¨ActiveX ·þÎñ ·½ÃæµÄ²úÆ·»òÕß¿´·¨£¬¾´ÇëÔÚ´Ë·¢²¼.