# PL SQL problem



## amandina (4. Jan 2010)

Hallo,
 Ich habe eine stored procedure geschrieben, die ich mit Java aufrufen möchte. Der call Aufruf wirft mir die ORA ORA-06576: Kein gültiger Funktions- oder Prozedurname 

das ist der Aufruf

call CASHDATA.archivieren('11.11.2009');

und die procedure:

```
CREATE or replace PROCEDURE "CASHDATA"."archivieren" (datum IN VARCHAR2) 
as 

BEGIN 


insert into cashdata.mt940importbuchungen_ar (select * from cashdata.mt940importbuchungen where satzid is not null and importkontoid in ( select importkontoid from cashdata.mt940importkonten where auszugsdatum<=to_date('datum','dd.mm.yyyy'))); 
insert into cashdata.mt940importkonten_ar ( select * from cashdata.mt940importkonten where auszugsdatum<=to_date('datum','dd.mm.yyyy')); 
insert into cashdata.bestandinfo_ar (select * from cashdata.bestandinfo where  bestandid in ( select bestandid from cashdata.bestand where bestandsdatum<=to_date('datum','dd.mm.yyyy'))); 
insert into cashdata.bestand_ar ( select * from cashdata.bestand where bestandsdatum<=to_date('datum','dd.mm.yyyy')); 
insert into cashdata.transaktion_ar ( select * from cashdata.transaktion where datum<=to_date('datum','dd.mm.yyyy')); 
insert into cashdata.vormerkposten_ar ( select * from cashdata.vormerkposten where buchungsdatum<=to_date('datum','dd.mm.yyyy')); 

delete from cashdata.mt940importbuchungen where satzid is not null and importkontoid in ( select importkontoid from cashdata.mt940importkonten where auszugsdatum<=to_date('datum','dd.mm.yyyy')); 
delete from cashdata.mt940importkonten where auszugsdatum<=to_date('datum','dd.mm.yyyy'); 
delete from cashdata.bestandinfo where  bestandid in ( select bestandid from cashdata.bestand where bestandsdatum<=to_date('datum','dd.mm.yyyy')); 
delete from cashdata.bestand  where bestandsdatum<=to_date('datum','dd.mm.yyyy'); 
delete from cashdata.transaktion  where datum<=to_date('datum','dd.mm.yyyy');
delete from cashdata.vormerkposten  where buchungsdatum<=to_date('datum','dd.mm.yyyy');  

END;
```


----------



## Wladimir (6. Jan 2010)

PL SQL ist zwar schon lange her, hmm, aber dieser Name mit den Double Quotes sieht mir sehr komisch aus?
Versuchs mal ohne:
CREATE or replace PROCEDURE CASHDATA.archivieren (datum IN VARCHAR2) 

Gibt es das Schema überhaupt schon?


----------



## abollm (7. Jan 2010)

amandina hat gesagt.:


> Hallo,
> Ich habe eine stored procedure geschrieben, die ich mit Java aufrufen möchte. Der call Aufruf wirft mir die ORA ORA-06576: Kein gültiger Funktions- oder Prozedurname
> 
> das ist der Aufruf
> ...



Der Fehler liegt in deiner Namensgebung.

Oracle erwartet für eine so bezeichnete Stored Procedure einen Namen mit gültigen Zeichen. Du hast aber einen Punkt im Prozedurnamen. Dann versucht Oracle im Normalfall den String vor dem Punkt als Schemanamen zu interpretieren.

Auf einer Oracle 10.2.x-DB kommt dann auch konsequenterweise die Meldung:
"ORA-01435: user does not exist"

Hier der Link zum Syntaxgraphen etc.:

CREATE PROCEDURE


----------

