如何调用 Oracle 存储过程在 Visual Basic.NET 使用 Microsoft Oracle 托管提供程序

摘自:http://support.microsoft.com/kb/321718

创建 Oracle 表

 

此示例使用在 Oracle 中定义的表 Scott/Tiger 架构。 默认,Oracle Scott/Tiger 架构附带标准 Oracle 安装。

如果不存在此架构,必须运行以下的"创建表和插入"脚本,表:
CREATE TABLE DEPT
(DEPTNO NUMBER(2,0) NOT NULL,
DNAME VARCHAR2(14) NULL,
LOC VARCHAR2(13) NULL,
PRIMARY KEY (DEPTNO)
);

INSERT INTO Dept VALUES(11,'Sales','Texas');
INSERT INTO Dept VALUES(22,'Accounting','Washington');
INSERT INTO Dept VALUES(33,'Finance','Maine');

CREATE TABLE EMP
(EMPNO NUMBER(4,0) NOT NULL,
ENAME VARCHAR2(10) NULL,
JOB VARCHAR2(9) NULL,
MGR NUMBER(4,0) NULL,
HIREDATE DATE NULL,
SAL NUMBER(7,2) NULL,
COMM NUMBER(7,2) NULL,
DEPTNO NUMBER(2,0) NULL,
FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO),
PRIMARY KEY (EMPNO)
);

INSERT INTO Emp VALUES(123,'Bob','Sales',555,'28-JAN-79',35000,12,30);
INSERT INTO Emp VALUES(321,'Sue','Finance',555,'12-MAY-83',42000,12,10);
INSERT INTO Emp VALUES(234,'Mary','Account',555,'14-AUG-82',33000,12,20);

创建 Oracle 包

Oracle 服务器上创建以下 Oracle 包:
CREATE OR REPLACE PACKAGE curspkg_join AS 
TYPE t_cursor IS REF CURSOR ;
Procedure open_join_cursor1 (n_EMPNO IN NUMBER, io_cursor IN OUT t_cursor);
END curspkg_join;
/
Oracle 服务器上创建以下 Oracle 程序包正文:
CREATE OR REPLACE PACKAGE BODY curspkg_join AS
Procedure open_join_cursor1 (n_EMPNO IN NUMBER, io_cursor IN OUT t_cursor)
IS
v_cursor t_cursor;
BEGIN
IF n_EMPNO <> 0
THEN
OPEN v_cursor FOR
SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.EMPNO = n_EMPNO;

ELSE
OPEN v_cursor FOR
SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;

END IF;
io_cursor := v_cursor;
END open_join_cursor1;
END curspkg_join;
/

创建 Visual Basic.NET 应用程序

  1. 请按照下列步骤创建 Visual Basic Windows 应用程序项目:
    1. 启动 Microsoft Visual Studio.NET。
    2. 文件 菜单上指向 新建 ,然后单击 项目
    3. 单击 项目类型 下的 Visual Basic 项目 ,然后单击 模板 下的 Windows 应用程序 。 默认,Form 1 添加到项目。
  2. 项目 菜单上单击 添加引用 ,并将引用设置为 System.Data.OracleClient。
  3. 将一个 Button 控件和一个 DataGrid 控件从工具箱拖到窗体。
  4. 在代码窗口的顶部添加以下代码:
    Imports System.Data.OracleClient
  5. 将以下代码添加到 Form 1 的 Button 1 _ Click 事件:
    Dim x As Exception
    Dim Ds As New DataSet()
    Dim Oraclecon As New OracleConnection("Server=YourOracle;Uid=uid;Pwd=pwd")


    Oraclecon.Open()


    Dim myCMD As New OracleCommand()
    myCMD.Connection = Oraclecon
    myCMD.CommandText = "curspkg_join.open_join_cursor1"
    myCMD.CommandType = CommandType.StoredProcedure
    myCMD.Parameters.Add(New OracleParameter("n_empno", OracleType.Number)).Value = 123
    myCMD.Parameters.Add(New OracleParameter("io_cursor", OracleType.Cursor)).Direction = ParameterDirection.Output


    Dim MyDA As New OracleDataAdapter(myCMD)

    Try

    MyDA.Fill(Ds)
    Catch x
    MessageBox.Show(x.Message.ToString)
    End Try



    DataGrid1.DataSource = Ds.Tables(0)

    Oraclecon.Close()
  6. 修改适合您的环境 OracleConnection 字符串。
  7. 按 F 5 编译并运行该应用程序。

转载于:https://www.cnblogs.com/NRabbit/archive/2009/07/10/1736183.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值