# CallableStatement Ungültiger Spaltenindex



## Gossi (4. Okt 2011)

Hallo,

Habe hier im Forum schon geschaut aber irgendwie keine passende Lösung gefunden.

Mein Problem besteht, wie aus der Überschrift zu erkennen, darin, dass mein CallableStatement net so will wie ich 

Hier ersmal nen paar Zeilen vom Compiler (bzw. der Console) und aus dem Quelltext:

Java-Code:

```
cs = connection.prepareCall("UPDATE_PARAM");
cs.setString(1, param.getKeyString());
cs.setString(2, param.getValue());
cs.setString(3, "" + param.getSteuerDf().getId());
cs.setInt(4, param.getId());
```

Das Statement:

```
BEGIN
    wflprod.DS_PKG.SET_param(?, ?, ?, ?);
END;
```

Und zu guter letzt, die Fehlermerldung:


> java.sql.SQLException: Ungültiger Spaltenindex
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
> ...



Danke schonmal im Vorraus, mit freundlichen Grüßen
Gossi


----------



## SlaterB (4. Okt 2011)

hast du je ein funktionierendes Beispiel gesehen, erfolgreich kopiert?

ohne das direkt zu kennen, habe ich mit einfachen Suchbegriffen 'CallableStatement java example'
Java sample code - Callable statement example - Source code examples
gefunden,
dort steht dann z.B. 

```
CallableStatement cs2 = con.prepareCall("{call ADDITION(?,?,?)}");
```
was eher zum Parameter setzen a la PreparedStatement passt


----------



## Gossi (4. Okt 2011)

Ich habe das ganze aus einem bereits laufendem Statement kopiert, dort führe ich genau das gleiche aus, mit dem Unterschied, dass es 7, anstelle von 4 Parametern sind und ein OUT Parameter dabei ist, aber ansonsten sind beide Statements genau die selben. Deswegen wundert es mich ja dass es hier nicht funktioniert.

Trotzdem schonmal danke für die Mühe.

PS:
Manchmal sieht man den Wald vor lauter Bäumen nicht -.-


```
//So hab ichs geschrieben
cs = connection.prepareCall("UPDATE_PARAM");

//So haette es aussehen muessen
cs = connection.prepareCall(getSqlBefehl("UPDATE_PARAM"));
```

Sonst weiß Java ja garnicht, das er das ganze aus der .xml-Datei auslesen muss :lol:


----------

