# Fehler bei Stored Function



## feete (7. Jan 2009)

Hallo,
ich finde meinen Fehler leider nicht. ich versuche mich grade an stored functions. soweit mein stand... 
leider liefert reString nur null zurück. ich bin mir mit den ? in dem preparedCall nicht ganz sicher, man beginnt bei zählen mit 1 oder? das ergebnis wird also mit  cstmt.getString(1); geholt?

hier der java code. auftrag_Oid ist z.B. 3


```
public String getTest(int auftrag_Oid) 
	{
		String reString = null;
		
		try
		{
			cstmt = con.prepareCall("{ ? = call getTest(?) }");
			cstmt.setInt(2, auftrag_Oid);
			cstmt.execute();
			reString = cstmt.getString(1);
		}
```

function getAuftragsstatus:


```
...
CREATE FUNCTION `getTest`(Auftrag_Oid INT) RETURNS varchar(40) CHARSET latin1
BEGIN
     DECLARE a VARCHAR(40);
     SELECT astatus INTO a FROM sposten WHERE oid=Auftrag_Oid;
     RETURN a;
    END
...
```

die abfrage 


```
SELECT astatus FROM sposten WHERE oid=1;
```

liefert das gewünschte ergebnis


gruß feete


----------



## michael18282 (7. Jan 2009)

Hallo,
wenn ich mir die Funktion anschaue, fällt mir folgendes auf.




```
CREATE FUNCTION `getTest`(Auftrag_Oid INT) RETURNS varchar(40) CHARSET latin1 
BEGIN 
     DECLARE a VARCHAR(40); 
     SELECT astatus INTO a FROM sposten WHERE oid=Auftrag_Oid; 
     RETURN a; 
    END
```

dein Code 

DECLARE a VARCHAR(40);  Wo wird a gesetzt ????

das hilft dir vielleicht weiter !!!

Gruß Michael


----------



## Ebenius (8. Jan 2009)

:-/ Was machst Du denn da? 

Du willst doch bestimmt sowas:
	
	
	
	





```
cstmt = con.prepareCall("{ call getTest(?) }"); 
cstmt.setInt(1, auftrag_Oid); 
ResultSet rs = cstmt.executeQuery(); 
reString = rs.getString(1);
```

Stimmts?


----------

