如何使用Oracle.DataAccess将9 MB文件插入Blob字段? [英] How do you insert 9 MB file into a Blob Field Using Oracle.DataAccess?

查看:238
本文介绍了如何使用Oracle.DataAccess将9 MB文件插入Blob字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试将大型音频文件插入Oracle 10g数据库中并不断出现此错误:

Trying to insert a large audio file into an Oracle 10g database and keep getting this error:

ORA-01460:请求未实现或不合理的转换

ORA-01460: unimplemented or unreasonable conversion requested

音频文件的字节数组长度为2702577.此过程适用于较小的数组长度,但不适用于较大的数组长度.

The byte array length of the audio file is 2702577. The procedure works with smaller array lengths, but not the larger ones.

这是我的代码,谢谢!

Dim oracleConnection As New OracleClient.OracleConnection
        Dim Cmd As New OracleClient.OracleCommand
        Dim oracleDataAdapter As New OracleDataAdapter

        oracleConnection.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("MasterConnectionODT")
        Cmd.Connection = oracleConnection
        Cmd.CommandText = "Audio.ADD_AUDIO"
        Cmd.CommandType = CommandType.StoredProcedure

        Dim aParam As New OracleClient.OracleParameter
        aParam.ParameterName = "I_FACILITY_ID_C"
        aParam.OracleType = OracleType.Char
        aParam.Value = FacID
        aParam.Direction = ParameterDirection.Input
        Cmd.Parameters.Add(aParam)

        aParam = New OracleParameter
        aParam.ParameterName = "I_TARP_ID_N"
        aParam.OracleType = OracleType.Number
        aParam.Value = TarpID
        aParam.Direction = ParameterDirection.Input
        Cmd.Parameters.Add(aParam)

        aParam = New OracleParameter
        aParam.ParameterName = "I_AUDIO_BLOB"
        aParam.OracleType = OracleType.Blob
        aParam.Value = Audio
        aParam.Direction = ParameterDirection.Input
        Cmd.Parameters.Add(aParam)


        Using oracleConnection
            oracleConnection.Open()
            Cmd.ExecuteNonQuery()
        End Using

推荐答案

您不能将大于32k的参数传递到存储过程中.而是将命令更改为SQL.就像这样:

You can't pass parameters larger than 32k into a stored procedure. Change your command to SQL instead. So it would be something like:

Cmd.CommandText = "insert into yourtable values (:I_FACILITY_ID_C, :I_TARP_ID_N, :I_AUDIO_BLOB)"
Cmd.CommandType = CommandType.Text

如果仍然有问题,请尝试使用ODP.Net(如果尚未使用).

If you still have trouble, you try using ODP.Net if you aren't already.

这篇关于如何使用Oracle.DataAccess将9 MB文件插入Blob字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆