使用Parameters.Add发出OracleCommand

时间:2014-12-10 15:00:40

标签: c# .net oracle ado.net

早上好,

我使用oracle作为db将vb迁移到c#app,当我在"添加"中添加第三个参数时,我得到以下问题。方法

我在vb中这样做:这里工作​​正常

 Public Function Tamanio() As Integer
            Dim IntTamanio As Integer = 0
            Select Case IntTipo
                Case OracleType.DateTime Or OracleType.Double Or _
                     OracleType.Float Or OracleType.Int16 Or _
                     OracleType.Int32 Or OracleType.Number : IntTamanio = 0
                Case Else : IntTamanio = StrValor.Length
            End Select
            Return IntTamanio
        End Function



 Private Sub CrearParametros(ByVal PSqlCmd As OracleCommand, ByVal Parametros As List(Of TParametro))
        Try
            For Each Parametro As TParametro In Parametros
                PSqlCmd.Parameters.Add(Parametro.Nombre, Parametro.TipoDato, Parametro.Tamanio).Value = Parametro.Valor
                    PSqlCmd.CreateParameter()
            Next
            PSqlCmd.Parameters.Add("PCodigo", OracleType.Int16, 0, 1).Direction = ParameterDirection.Output
            PSqlCmd.CreateParameter()
            PSqlCmd.Parameters.Add("PMensaje", OracleType.VarChar, 250, Nothing).Direction = ParameterDirection.Output
            PSqlCmd.CreateParameter()
            PSqlCmd.Parameters.Add("PRs", OracleType.Cursor, 0, Nothing).Direction = ParameterDirection.Output
            PSqlCmd.CreateParameter()
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

但是当我在C#中做同样的事情时:这是我得到错误的地方

public int Tamanio()
            {
                int IntTamanio = 0;
                switch (IntTipo)
                {
                    case OracleType.DateTime | OracleType.Double | OracleType.Float | OracleType.Int16 | OracleType.Int32 |             OracleType.Number:
                        IntTamanio = 0;
                        break;
                    default:
                        IntTamanio = StrValor.Length;
                        break;
                }
                return IntTamanio;
            }

private void CrearParametros(OracleCommand PSqlCmd, List<TParametro> Parametros)
        {
            try
            {
                foreach (TParametro Parametro in Parametros)
                {
                    PSqlCmd.Parameters.Add(Parametro.Nombre,Parametro.TipoDato, Parametro.Tamanio).Value = Parametro.Valor;
                    PSqlCmd.CreateParameter();
                }
                PSqlCmd.Parameters.Add("PCodigo", OracleType.Int16, 0, null).Direction = System.Data.ParameterDirection.Output;
                PSqlCmd.CreateParameter();
                PSqlCmd.Parameters.Add("PMensaje", OracleType.VarChar, 250, null).Direction = System.Data.ParameterDirection.Output;
                PSqlCmd.CreateParameter();
                PSqlCmd.Parameters.Add("PRs", OracleType.Cursor, 0, null).Direction = System.Data.ParameterDirection.Output;
                PSqlCmd.CreateParameter();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

错误说明:

超载的最佳巧合
  

&#34; System.Data.OracleClient.OracleParameterCollection.Add(字符串,System.Data.OracleClient的,INT)&#34;   几乎没有无效的论点。

有谁知道可能会发生什么?

提前致谢,

0 个答案:

没有答案