使用sql或vb6或vb.net选择长原始blob oracle 8,1

使用sql或vb6或vb.net选择长原始blob oracle 8,1,vb.net,oracle,select,vb6,long-integer,Vb.net,Oracle,Select,Vb6,Long Integer,我有很长的原始数据类型列。要选择它。例如,在屏幕上显示它。或者使用vb6或vb.net将其保存到文件中。我一整天都不走运。到目前为止,您是否拥有此代码: CREATE OR REPLACE FUNCTION longrawtochar(v_raw long raw) return varchar2 is rawlen number; hex varchar2(32767); rawparam varchar2(32767); i number; begin hex := ra

我有很长的原始数据类型列。要选择它。例如,在屏幕上显示它。或者使用vb6或vb.net将其保存到文件中。我一整天都不走运。到目前为止,您是否拥有此代码:

CREATE OR REPLACE FUNCTION longrawtochar(v_raw long raw) return varchar2
is
  rawlen number;
  hex varchar2(32767);
  rawparam varchar2(32767);
  i number;
begin
  hex := rawtohex(v_raw);
  rawlen := length(hex);
  i := 1;
  while i <= rawlen
  loop
    rawparam := rawparam||CHR(to_number((substrb(hex,i,2)),'xx'));
    i := i + 2;
  end loop;
  return rawparam;
end;
创建或替换函数longrawtochar(v_raw long raw)返回varchar2
是
罗伦数;
十六进制varchar2(32767);
rawparam varchar2(32767);
i编号;
开始
十六进制:=原始十六进制(v_原始);
拉伦:=长度(十六进制);
i:=1;
而i数据类型除了在较新版本的Oracle PL/SQL中被弃用外,通常比最大长度为32767字节的
VARCHAR2
长得多。如果要显示字段的值(毕竟是二进制数据),为什么不使用VB.NET SQL类来选择值,然后将其转储到兼容的数据类型(如字节数组)中,以便在屏幕上显示或流式传输到文件中

VB.NET允许您使用和(从.NET 4.0起已弃用,但从.NET 4.5起仍可用)之类的东西来运行
长原始数据的查询,并将值检索到字节数组中。(请注意,此示例代码来自我的brain编译器,因为我没有Oracle数据库可供测试):

从这里开始,只需将其发送到内存或文件流中,然后将其输出到文件或其他与流兼容的目标。

检查以下内容:
Dim output As Byte()
Using conn As OracleConnection = New OracleConnection(strConnectionString)
    Dim command As New OracleCommand("SELECT MyLongRaw FROM LongRawTable", conn)
    conn.Open()
    Dim reader As OracleDataReader = command.ExecuteReader()

    If reader.Read() Then
        If reader.GetBytes(0, 0, output, 0, reader.GetBytes(0, 0, Nothing, 0, 0)) > 0 Then
        ..Do Something With The Byte Array..
        End If
    End If
End Using