.net - Select Command auf Oracle DB

martinpriebe

Erfahrenes Mitglied
Hallo,

ich kämpfe gerade mit der Verbindung zu einer Oracle Datenbank.
Ich habe eine Stored Procedure.


create or replace
PROCEDURE SP_SELECTKH
(
Khid out NOCOPY VARCHAR2,
ort out NOCOPY VARCHAR2 ,
bundesland out NOCOPY VARCHAR2
)AS
BEGIN
Select Khid, Ort, Bundesland into Khid, ort, bundesland
from Krankenhaus;
END SP_SELECTKH;

Diese rufe ich aus dem Code heraus auf.

OracleConnection orCon = new ....
orCon.Open();
OracleCommand orCom = new OracleCommand();
orCom.CommandText = "sp_SelectKH";
orCom.CommandType = CommandType.StoredProcedure;
orCom.Connection = orCon;

orCom.Parameters.Add("Id", OracleDbType.NVarchar2, ParameterDirection.Output);

orCom.Parameters.Add("Ort", OracleDbType.NVarchar2, ParameterDirection.Output);

orCom.Parameters.Add("Bundesland", OracleDbType.NVarchar2, ParameterDirection.Output);

OracleDataAdapter oda = new OracleDataAdapter(orCom);
DataTable dt = new DataTable();
oda.SelectCommand.Connection = orCon;
oda.Fill(dt);

orCon.Close();

Nur ich bekomme den Fehler ORA-06502.
Ich weiß leider nicht weiter. Google hat mir leider nicht weiter geholfen.

danke im vorraus !
 

Norbert Eder

Erfahrenes Mitglied
Die Stored Procedure schon mal direkt auf der Datenbank ausgeführt? Denn anscheinend überschreitest du dabei irgendwo die Länge einer Variable. Überprüf das mal.
 

Nico Graichen

Erfahrenes Mitglied
Hi

Das könnte daran liegen, dass du im Programm Multibyte-Datentypen erwartest und auf DB-Seite aber nur SingleByte-Datentypen nutzt.

PS: Bitte poste den Quelltext in CODE-Tags, das macht die Sache lesbaren. danke
 

martinpriebe

Erfahrenes Mitglied
Also direkt die SP aufrufen geht auch nicht !
Aber da stelle ich mich auch sehr doof an ..

<declare
<khid varchar2;
<ort varchar2;
<bundesland varchar2;
<begin
<exec SP_SELECTKH (khid, ort, bundesland);
<end;

geht net ..

Also mit SQL Server bin ich irgendwie besser klar gekommen.

Naja ich bin auf jeden Fall für jede Hilfe sehr dankbar !!
 

martinpriebe

Erfahrenes Mitglied
komisch ..
wenn ich nicht gleich parameters.add mache sondern erst Parameter.create und dann eine Size angebe dann geht es
Gebe ich die Size direkt an bei dem add befehl geht es nicht.
naja egal.

Nun kommt gleich der nächste fehler.

Die Sache läuft durch aber ich bekomme keine Daten zurück !
Mein Dataset bleibt leer.
Ich fülle es per DataAdapter.

Und wenn es mehrere Datensätze gibt bekomme ich die Exception ORA-01422.
Muss ich da bei der Select Anweisung den Rückgabewert bzw den Typ verändern ?
Welchen Typ muss ich dann benutzen ?
 

martinpriebe

Erfahrenes Mitglied
Jap,
naja mir ist es schon klar.

Ich habe als Output Parameter nur einen Wert angegeben. String, Int etc...
Und wenn ich aus einer Select Anweisung mehr zurück bekomme kann ich die nicht in eine einzelne Variable packen.

Durch die Select Into Anweisung brauche ich ja Output Parameter oder ?
Oder muss ich ne Art Table zurück geben ?
 

Neue Beiträge