Announcement

Collapse
No announcement yet.

Oracle Prozedur aus VB.NET aufrufen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Oracle Prozedur aus VB.NET aufrufen

    Hallo,

    ich würde gerne eine Prozedur in Oracle über ein VB-Programm aufrufen. Ich bin dazu wie folgt vorgegangen:
    Code:
            Dim OracleConnection As New OracleConnection
            OracleConnection.ConnectionString = ConnectionStringOracle
            Debug.Print(ConnectionStringOracle)
    
            Dim OracleCmd As New OracleCommand()
            With OracleCmd
                .Connection = OracleConnection
                .CommandText = "Admin.MAILMITARBEITERLISTE"
                .CommandType = CommandType.StoredProcedure
                .Parameters.Add(New OracleParameter("Benutzer", OracleType.VarChar)).Value = "User1"
            End With
            OracleConnection.Open()
            OracleCmd.ExecuteNonQuery()
            OracleConnection.Close()
    nun erhalte ich aber beim Start folgende Fehlermeldung:
    System.Data.OracleClient.OracleException was unhandled
    Code=6550
    ErrorCode=-2146232008
    Message=ORA-06550: Zeile 1, Spalte 7:
    PLS-00201: Bezeichner 'ADMIN.MAILMITARBEITERLISTE' muss deklariert werden
    ORA-06550: Zeile 1, Spalte 7:
    PL/SQL: Statement ignored
    Im Schema Admin habe ich die aufzurufende Prozedur "MAILMITARBEITERLISTE" hinterlegt.

    Ich finde den Fehler hier nicht. Hat jemand einen Tipp?

    vielen Dank!

  • #2
    Wenn ich es richtig sehe (bin kein VB-Experte), meldest du dich als "User1" an.
    Dieser Benutzer verfügt für die Prozedur MAILMITARBEITERLISTE im Schema von ADMIN keine Ausführungsrechte.

    kuemmelchen

    Comment


    • #3
      das istz nicht ganz korrekt ... "User1" wird als Parameter an die Prozedur übergeben, ich melde mich schon mit dem Benutzer an, der auch die Prozedur im Schema hat.

      Comment


      • #4
        Lass dir mal die Prozedurnamen aus dem Schema admin ausgeben. Unbekannter Bezeichner läßt vermuten, dass die Prozedur einen anderen Namen als gedacht (Buchstabendreher) besitzt.

        kuemmelchen

        Comment


        • #5
          Wenn du Parameter addieren möchtest, muss dafür ein Platzhalter definiert sein.

          [highlight=vb.net]
          With OracleCmd
          .Connection = OracleConnection
          .CommandText = "Admin.MAILMITARBEITERLISTE(:Benutzer)"
          .CommandType = CommandType.StoredProcedure
          .Parameters.Add(New OracleParameter("Benutzer", OracleType.VarChar)).Value = "User1"
          End With
          [/highlight]

          Mit CommandType.StoredProcedure habe ich noch nie gearbeitet, versuche es mal so:

          [highlight=vb.net]
          With OracleCmd
          .Connection = OracleConnection
          .CommandText = "begin Admin.MAILMITARBEITERLISTE(:Benutzer); end;"
          .CommandType = CommandType.Text
          .Parameters.Add(New OracleParameter("Benutzer", OracleType.VarChar)).Value = "User1"
          End With
          [/highlight]

          Steht in dieser Form auch in der Oracle Doc: http://download.oracle.com/docs/cd/B...b28375/toc.htm

          Gruss

          Comment


          • #6
            hm, also ich habs mir ausm netz zusammengesucht: z.B. LINK oder LINK
            Einen Buchstabendreher will ich mal ausschliessen, ich habs jetzt mit copy&paste übernommen.

            Beim Vorschlag von Wernfried bekomme ich dann folgende Meldung:
            System.Data.OracleClient.OracleException was unhandled
            Code=1036
            ErrorCode=-2146232008
            Message=ORA-01036: Variablenname/-nummer ungültig

            Source=System.Data.OracleClient
            Zuletzt editiert von Chriss; 26.10.2011, 14:41.

            Comment


            • #7
              Wie es aussieht verwendest du den Oracle .NET Data Provider von Microsoft.

              Soweit ich weiss ist der unbrauchbar, verwende besser den von Oracle (Oracle Data Provider for .NET) - Oracle.DataAccess.Client

              [highlight=vb.net]
              With OracleCmd
              .Connection = OracleConnection
              .CommandText = "begin Admin.MAILMITARBEITERLISTE(:Benutzer); end;"
              .CommandType = CommandType.Text
              .Parameters.Add("Benutzer", OracleDbType.Varchar2, ParameterDirection.Input).Value = "User1"
              End With
              [/highlight]

              Comment


              • #8
                Dann gehts gleich weiter:
                Code:
                InnerException: Oracle.DataAccess.Client.OracleException
                       DataSource=""
                       ErrorCode=-2147467259
                       Message=Der Provider ist mit der Version des Oracle-Clients nicht kompatibel
                       Number=-11
                       Procedure=""
                       Source=Oracle Data Provider for .NET
                       StackTrace:
                            bei Oracle.DataAccess.Client.OracleInit.Initialize()
                            bei Oracle.DataAccess.Client.OracleConnection..cctor()
                       InnerException:
                der Client ist:
                Version 2.112.1.0 C:\Programme\Oracle\product\11.2.0\client_1\ODP.NE T\bin\2.x\Oracle.DataAccess.dll

                Comment


                • #9
                  (Alle) Oracle Treiber, bzw. den Client mal neu installieren oder die Version 1.x probieren.

                  Gruss

                  Comment


                  • #10
                    hm, den client habe ich schon neu installiert, da mekkert er schon bei der installation, dass es kompatibilitätsprobleme mit windows 7gibt. ich teste als nächstes mal eine 1er version.

                    Comment

                    Working...
                    X