Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/09/2011, 13:31
VivaElPirateo
 
Fecha de Ingreso: septiembre-2011
Mensajes: 40
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Procedimiento Almacenado en Java

Buenas comunidad:

Tengo la siguiente clase de consola para mi procedimiento almacenado
(pretendo borrar los registros a través de la variable RUT)



package ProcedimientoAlmacenado;

import java.sql.*;
import java.util.*;
import java.io.*;

public class ProcedimBorrar {
private Connection Conexion;
private CallableStatement cstmt = null ;
public ProcedimBorrar(Connection Con) {

Conexion = Con;
}

public static void main(String args[]) throws Exception
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLSer verDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://MARTE:1433;DatabaseName=Prueba", "sa", "gsiinformatica");
//Step-1

CallableStatement cstmt = con.prepareCall("{call ProcedAlmac_BorraPersona(?,?,?)}");
Scanner sc=new Scanner(System.in);

// Statement stmt = con.createStatement();
// Si fuese integer System.out.print("Enter the Employee No: ");
//int x=sc.nextInt();



//System.out.print("Ingrese el nombre: ");
//String nombre = sc.next();

//System.out.print("Ingrese el apellido: ");
//String apellido = sc.next();

System.out.println("Ingrese el RUT: ");
String rut = sc.next();


//Step-2
//cstmt.setString(1,nombre);
//cstmt.setString(2,apellido);
cstmt.setString(3,rut);

//Step -3
cstmt.execute();
System.out.println("***Llamada a Procedimiento Almacenado****");
System.out.println("Persona eliminada con Exito");
con.close();
}

}

Me tira el siguiente error:


Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: El valor no está configurado para el número de parámetro 2.
at com.microsoft.sqlserver.jdbc.SQLServerException.ma keFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.b uildParamTypeDefinitions(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStat ement.buildPreparedStrings(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStat ement.doPrepExec(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStat ement.execute(Unknown Source)
at ProcedimientoAlmacenado.ProcedimBorrar.main(Proced imBorrar.java:46)


Este es mi procedimiento almacenado:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO



ALTER PROCEDURE [dbo].[ProcedAlmac_BorraPersona]
@nombre varchar(30),
@apellido varchar(20),
@rut varchar(12)
AS
BEGIN
DELETE
FROM tbl_persona
WHERE rut = @rut

END