ayuda con SQL server y java

Hola buenos dias,soy nuevo en el foro,tengo un problema,soy nuevo en las ejecuciones de SQL con java,necesito hacer un formulario que se conecte a la base de datos de SQL server,ya que conecto a la base de datos habilito un boton que diga COMENZAR dando click necesito disparar un query que el DBA me otorgo pero sinceramente nunca habia visto un query de ese tipo,al momento de ejecutarlo me manda esto:
 
Esta utilizando variables de Tabla,el query es muy largo y trate de separarlo por medio de variables pero no me funciona ni todo corrido.
Este es el codigo del Boton que dice Comenzar:
 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

CallableStatement

Me suena a que debes de utilizar  

Intenta reemplazar esta linea
 

Por esto
 

Error

ya lo reemplaze y me sigue mostrando el mismo error

Imagen de santos.r09

Es un error de sintaxis de SQL, No es problema con Java

¿Ya verificaste que el Script funcione correctamente en SQL Client??, pruebalo en un cliente de SQL, cuando estes seguro que funciona lo metes a tu código en Java.

No es de SQL es de JAVA

Este es el Script de SQL y si lo ejecuto en SQL Server 2008 si lo hace,el problema es cuando lo ejecuto en java,me dice error de sintaxis por el DECLARE que es una variable de tabla,y tambien se utilizan tablas temporales

 

Imagen de Eduardo Vargas

Intenta concatenar las variables

Hola Oliv3r

Por alguna buena razón quieren ejecutar ese código SQL escribiéndolo dentro de un método java, en vez de ponerlo en un stored procedure.

Según el código java que nos muestras, sólo estás pasando la variable "sql" al método executeQuery()
Seguramente por eso te manda el error de sintaxis relacionado con '@EX_PED' porque esta variable la estás usando en un comando "INSERT INTO" y a este comando le falta la instrucción "SELECT etc,etc, " y esto último lo tienes en la variable "sql2" la cual no la estás ejecutando.

Creo que hace falta concatener todas tus variables "sql..." y meterlas a un método "execute()": Sugiero que utilices el método "execute()" para este tipo de código que combina inserts, select, etc...

Nos cuentas cómo te fue.

Imagen de Eduardo Vargas

Seguramente usas un método inadecuado de Statement

Hola nuevamente Oliv3r,

Ya probé tu código, como debería de escribirse, y sí corre bien. Posiblemente te confundiste con lo que estabas intentando hacer y lo que te estábamos sugiriendo que hicieras.

Te paso documentación para que puedas llegar a la solución. La clave para que corra bien el código, es el uso del método adecuado de la interfaz Statement

Van varias ligas:



Imagen de Eduardo Vargas

Va la solución sobre el query que tronaba

Hola Oliv3r,

Espero que hayas podido encontrar la solución a tiempo. Me pareció que podrías estar comenzando con jdbc y sql y tal vez no podrías entender nuestras explicaciones. Desafortunadamente no tengo mucho tiempo libre y ya no pude entrar aquí a tiempo para darte la solución. De todos modos se las paso para que otras personas puedan enriquecer su conocimiento básico sobre jdbc

No tienes que partir el query ni hacerle nada. Sólo hay que meterlo como argumento del método "execute()", y debes recibir un valor booleano. Tu ejecución seguramente estaba tronando porque esperabas obtener un Resut Set y eso no se recibe cuando ejecutas juntas sentencias tales como select, update, insert, etc. Lo que recibes es un boolean.

Va:

boolean hasResultSet = stmt.execute("TU QUERY GRANDOTOTOTOTOTE");
System.out.println("query exitoso \n" + hasResultSet);

Es más, Inclusive sí puedes ejecutar el query así como lo estabas haciendo, pero sin esperar obtener nada:

stmt.executeQuery(sql);

No es conveniente asignarle a un ResultSet la respuesta obtenida de la ejecución de tu query que combina varias sentencias sql, porque no hay garantía de obtener siempre un ResultSet de respuesta, y por eso seguramente estaba tronando. Por eso es más adecuado usar el método "execute()". Inclusive esto dice la documentación de Oracle.

"execute()"

muchas gracias Eduardo yo tengo este problemitititita public void Agregar(int id, String nombre, String apellido, String direccion, String colonia, int seccion, int codigo, String telefono, String mail)
hora se que tengo que investigar sobre "execute()" para uqe me deje pasarlo netbeans GRACIAS!!