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