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