0

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

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

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

这是我的代码,谢谢!

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
4

1 回答 1

0

您不能将大于 32k 的参数传递给存储过程。改为将您的命令更改为 SQL。所以它会是这样的:

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

如果您仍然遇到问题,请尝试使用 ODP.Net(如果您还没有的话)。

于 2010-05-14T18:39:42.370 回答