• [Oracle整理].NET 调用 Oracle之REF Cursor


    一、创建测试数据

    --创建message表-- 
    create table message 
    ( 
    Msg_Id number primary key, 
    Msg_Title varchar2(100) not null, 
    Msg_Body varchar2(2000), 
    Msg_Createtime date default sysdate, 
    Msg_UserName varchar2(30) 
    ); 
    --初始化message表数据-- 
    create or replace procedure prd_InitMessage 
    is
    
    begin 
      
        for i in 1..15 loop 
          insert into scott.message(msg_id,msg_title,msg_body,msg_username) 
          values 
            (i, 'Test独上高楼望断天涯路', 'Test衣带渐宽终不悔', 'king'||i);  
    
        end loop; 
        commit; 
    end ;

    二、创建存储过程

    /* 
    包声明 
    */ 
    create or replace package pkg_message 
    is 
      --声明变量、过程 
      type type_refcur is ref cursor;--游标变量,由于返回多条记录 
      procedure GetAllMessage( 
        result1 out type_refcur 
      ); 
    end; 
    /* 
    包主体 
    */ 
    create or replace package body pkg_message 
    is 
      --要注意一点是 procedure 前面不能有create 
      procedure GetAllMessage( 
        result1 out type_refcur 
      ) 
      is 
       
      begin 
        open result1 for 
        select * from scott.message; 
      end GetAllMessage; 
    end;

    三、VB.NET 调用PROCEDURE

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim conn As New System.Data.OracleClient.OracleConnection
    
            conn.ConnectionString = "user id=scott;data source=orcl;password=123"
            Try
                
                conn.Open()
    
                Dim comm As New OracleCommand
                comm.Connection = conn
                comm.CommandType = CommandType.StoredProcedure
                comm.CommandText = "pkg_message.GetAllMessage"
    
                Dim result1 As New OracleClient.OracleParameter
                result1.OracleType = OracleType.Cursor
                result1.Direction = ParameterDirection.Output
                comm.Parameters.Add(result1)
    
                'comm.Parameters.Add("result", OracleType.Cursor)
                'comm.Parameters("result").Direction = ParameterDirection.Output
    
                Dim ds As DataSet = New DataSet
                Dim ada As New System.Data.OracleClient.OracleDataAdapter(comm)
                ada.Fill(ds)
    
    
                'Me.DataGrid1.DataSource = ds.Tables("message")
                conn.Close()
                MsgBox("success!!!")
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub

    _

    狦_

    人的一生应该这样度过:当他回首往事的时候,不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。
  • 相关阅读:
    Spring5.2.x04BeanDefinitionMap
    spring配置类解析
    spring5 解析配置类
    分布式唯一id生成器
    电脑变流畅的方法(也是网吧电脑比家里的电脑流畅的原因)
    nginx启动访问
    Win10按f5不能刷新页面 变成了调节亮度怎么办?
    Linux 内核定时器
    Linux 中断下半部工作队列(work queue)
    Linux 虚拟字符设备globalmem
  • 原文地址:https://www.cnblogs.com/htht66/p/2346796.html
Copyright © 2020-2023  润新知