08. september 2003 - 15:06
Der er
6 kommentarer og 1 løsning
Kalde en Stored Procedure med Param
Nogen der kan hjælpe? Mit problem er, at det der står i while løkken ikke bliver skrevet ud.... // Stored procedure der skal kaldes. CallableStatement cs = cnx.prepareCall("{? = call GetACustomerInfo[?]}"); // registrere input parametere cs.setString(1, "156000"); ResultSet rs = cs.executeQuery(); if (rs.wasNull() == true) { System.out.println("ResultSet indeholdet ingen rækker!"); } while(rs.next()) { String lastName = rs.getString("lastName"); System.out.println("Efternavn: "+lastName+"\n"); } ------- Her er min Stored Procedure: CREATE PROCEDURE GetACustomerInfo (@custId VarChar(10) ) AS -- SQL Statementet SELECT dbo.Customer.firstName, dbo.Customer.lastName, dbo.Customer.address, dbo.Customer.zipcode, dbo.Zipcode.city, dbo.Customer.phone, dbo.Customer.email, dbo.Account.ballance, dbo.Customer.accountNo, dbo.Employee.title, dbo.Employee.firstName AS Expr1, dbo.Employee.lastName AS Expr2, dbo.Employee.phone AS Expr3, dbo.Employee.email AS Expr4, dbo.Employee.dptNo, dbo.Department.dptName FROM dbo.Account INNER JOIN dbo.Customer ON dbo.Account.accountNo = dbo.Customer.accountNo INNER JOIN dbo.Employee ON dbo.Customer.employeeNo = dbo.Employee.employeeNo INNER JOIN dbo.Department ON dbo.Employee.dptNo = dbo.Department.dptNo INNER JOIN dbo.Zipcode ON dbo.Customer.zipcode = dbo.Zipcode.zipcode WHERE dbo.Customer.customerNo = @custId GO
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
08. september 2003 - 15:14
#1
CallableStatement cs = cnx.prepareCall("{? = call GetACustomerInfo[?]}"); skal være CallableStatement cs = cnx.prepareCall("{? = call GetACustomerInfo(?)}");
08. september 2003 - 15:20
#2
Men din procedure har ingen returværdi, så hvorfor lave ("{? = call GetACustomerInfo(?)}"); Hvis det er en funktion skal du skrive ?= call xx(?) Hvis det er en procedure skal du skrive call xx(?) Ved funktioner er der en Return i slutningen af din SQL.
08. september 2003 - 15:22
#3
Jep. Og: cs.setString(1, "156000"); skal nok være: cs.setString(2, "156000"); Og jeg ville nok kode result ste processingen anderledes.
08. september 2003 - 15:25
#5
Og hvis der skal returneres en værdi (hvad man vistnok normalt gør), så skal typen af det argument angives med en registerOutParameter.
08. september 2003 - 15:30
#6
Ja, fint eksempel.. Det viser det hele i en omgang (output, return og Resultset).
08. september 2003 - 16:51
#7
Tak for hjælpen: Dette indlæg af Magoo20000 løste problemet: Men din procedure har ingen returværdi, så hvorfor lave ("{? = call GetACustomerInfo(?)}"); Hvis det er en funktion skal du skrive ?= call xx(?) Hvis det er en procedure skal du skrive call xx(?) Ved funktioner er der en Return i slutningen af din SQL.
Kurser inden for grundlæggende programmering