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:
Excepcion del querycom.microsoft.sqlserver.jdbc.SQLServerException: Sintaxis incorrecta cerca de '@EX_PED'.
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:
sql = "DECLARE @EX_PED TABLE (PERIODO SMALLINT, EJERCICIO SMALLINT,Cerrado SMALLINT ,Orden INT,ReqtrASp SMALLINT,Ctpoliza INT ) "
+ "INSERT INTO @EX_PED";
sql2 = "SELECT Periodo,Ejercicio, '0' AS Cerrado,'10' AS Orden,'0' AS ReqtrASp,'-1' AS Ctpoliza "
+ "from CtEmpresa1.dbo.Afectaciones"
+ "group by Periodo,Ejercicio";
sql3 = "INSERT INTO EmpresAS.dbo.ADMPER01 (PERIODO,EJERCICIO,CERRADO,ORDENADO,REQTRASP,CTPOLIZAS)"
+ "SELECT* from @EX_PED";
sql4 = "DECLARE @NivelA TABLE(Fila_A int IDENTITY(1,1),Codigo_A varchar(50),"
+ " Nombre_A varchar(50),CTAM_AFEC_A varchar(2))";
try {
stmt = conn.createStatement();
//stmt.executeUpdate(sql);
res = stmt.executeQuery(sql);
System.out.println("query exitoso \n" + res);
stmt.close();
res.close();
} catch (SQLException e) {
System.out.println("Excepcion del query" + e);
JOptionPane.showMessageDialog(null, " Error de ejecucion del query", "Error", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null, e + "");
}
//Un poco del Query que se debe ejecutar
// + "DECLARE @NivelB TABLE(Fila int IDENTITY(1,1),Codigo varchar(50), "
// + " Nombre varchar(50),CTAM_AFEC varchar(2),"
// + "NIVEL varchar(1))"
// + "DROP table #ASIGNA_NIVELA"
// + "SELECT Codigo as Codigo_A,Nombre as Nombre_A, convert(varchar(1),CtaMayor)+convert(varchar(1),Afectable) as CTAM_AFEC_A"
// + "into #ASIGNA_NIVELA"
// + "FROM CtEmpresa1.dbo.Cuentas"
// + " WHERE IsNumeric(Codigo) = 1"
// + " order by Codigo"
// + "INSERT INTO @NivelA"
// + "Select * from #ASIGNA_NIVELA WHERE Codigo_A>500"
// + "DROP table #ASIGNA_NIVELB"
// + "SELECT Codigo,Nombre, convert(varchar(1),CtaMayor)+convert(varchar(1),Afectable) as CTAM_AFEC,'0' as NIVEL"
// + "into #ASIGNA_NIVELB"
// + "FROM CtEmpresa1.dbo.Cuentas"
// + "WHERE IsNumeric(Codigo) = 1"
// + "order by Codigo"
// + "INSERT INTO @NivelB"
// + "Select * from #ASIGNA_NIVELB WHERE Codigo>500"
// + "drop table #DEFENE_NIVELES"
// + "SELECT * "
// + "into #DEFENE_NIVELES"
// + "FROM (SELECT * FROM @NivelA) Actual"
// + "LEFT JOIN (SELECT * FROM @NivelB) Siguiente"
// + "ON Actual.Fila_A-1= Siguiente.Fila";
}
- Inicie sesión o regístrese para enviar comentarios
CallableStatement
Me suena a que debes de utilizar
CallableStatement
Intenta reemplazar esta linea
Por esto
statement.execute();
Error
ya lo reemplaze y me sigue mostrando el mismo error
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
INSERT INTO @EX_PED
SELECT Periodo,Ejercicio, '0' AS Cerrado,'10' AS Orden,'0' AS ReqtrASp,'-1' AS Ctpoliza
from CtEmpresa1.dbo.Afectaciones
group by Periodo,Ejercicio
---Crear tablAS Periodos
INSERT INTO EmpresAS.dbo.ADMPER01 (PERIODO,EJERCICIO,CERRADO,ORDENADO,REQTRASP,CTPOLIZAS)
SELECT* from @EX_PED
--DELETE FROM EmpresAS.dbo.ADMPER01
--WHERE PERIODO IN (6,7)
--SELECT * FROM CtEmpresa1.dbo.Afectaciones
--SELECT * FROM Empresas.dbo.ADMPER01
--order by PERIODO,EJERCICI
----Tablas para comparar los Niveles de las cuentas
DECLARE @NivelA TABLE(Fila_A int IDENTITY(1,1),Codigo_A varchar(50),
Nombre_A varchar(50),CTAM_AFEC_A varchar(2))
DECLARE @NivelB TABLE(Fila int IDENTITY(1,1),Codigo varchar(50),
Nombre varchar(50),CTAM_AFEC varchar(2),
NIVEL varchar(1))
drop table #ASIGNA_NIVELA
SELECT Codigo as Codigo_A,Nombre as Nombre_A, convert(varchar(1),CtaMayor)+convert(varchar(1),Afectable) as CTAM_AFEC_A
into #ASIGNA_NIVELA
FROM CtEmpresa1.dbo.Cuentas
WHERE ISNUMERIC(Codigo)=1
order by Codigo
INSERT INTO @NivelA
Select * from #ASIGNA_NIVELA WHERE Codigo_A>500
drop table #ASIGNA_NIVELB
SELECT Codigo,Nombre, convert(varchar(1),CtaMayor)+convert(varchar(1),Afectable) as CTAM_AFEC,'0' as NIVEL
into #ASIGNA_NIVELB
FROM CtEmpresa1.dbo.Cuentas
WHERE ISNUMERIC(Codigo)=1
order by Codigo
INSERT INTO @NivelB
Select * from #ASIGNA_NIVELB WHERE Codigo>500
drop table #DEFENE_NIVELES
SELECT *
into #DEFENE_NIVELES
FROM (SELECT * FROM @NivelA) Actual
LEFT JOIN (SELECT * FROM @NivelB) Siguiente
ON Actual.FILA_A-1= Siguiente.FILA
-------Actualiza los Niveles y crea las cuentas que se encuentran como DETALLE (1,1)
UPDATE #DEFENE_NIVELES SET NIVEL=CASE WHEN CTAM_AFEC_A='11' AND CTAM_AFEC='20' THEN '1'
WHEN CTAM_AFEC_A='10' AND CTAM_AFEC='11' THEN '1'
WHEN CTAM_AFEC_A='21' AND CTAM_AFEC='10' THEN '2'
WHEN CTAM_AFEC_A='21' AND CTAM_AFEC='21' THEN '2'
WHEN CTAM_AFEC_A='20' AND CTAM_AFEC='21' THEN '2'
WHEN CTAM_AFEC_A='21' AND CTAM_AFEC='20' THEN '3'
WHEN CTAM_AFEC_A='21' AND CTAM_AFEC='20' THEN '3'
WHEN CTAM_AFEC_A='10' AND CTAM_AFEC='21' THEN '1'
WHEN CTAM_AFEC_A='20' AND CTAM_AFEC='10' THEN '2'
WHEN CTAM_AFEC_A='20' AND CTAM_AFEC='20' THEN '2'
WHEN CTAM_AFEC_A='11' AND CTAM_AFEC='21' THEN '1'
WHEN CTAM_AFEC_A='11' AND CTAM_AFEC='11' THEN '1'
WHEN CTAM_AFEC_A='21' AND CTAM_AFEC='10' THEN '2'
WHEN CTAM_AFEC IS NULL THEN SUBSTRING(CTAM_AFEC_A,1,1)
ELSE '2' END
--SELECT * FROM #DEFENE_NIVELES
---CREA LA TABLA BASE DE LAS CUENTAS
DROP TABLE #EXTR_SOLO_CUENTAS
SELECT *
INTO #EXTR_SOLO_CUENTAS
FROM CtEmpresa1.dbo.Cuentas
WHERE ISNUMERIC(Codigo)=1
------Extrae la informacion de la base
select * from CtEmpresa1.dbo.Cuentas
order by Codigo
DROP TABLE #TABLA_BASE_CUENTAS
SELECT id AS ID,Codigo,
SUBSTRING(Codigo,1,3)+'0'+SUBSTRING(Codigo,4,1)+CASE
WHEN SUBSTRING(Codigo,5,1)<>0 and SUBSTRING(Codigo,6,1)<>0 and SUBSTRING(Codigo,7,1)<>0
THEN SUBSTRING(Codigo,5,1)+SUBSTRING(Codigo,6,1)+SUBSTRING(Codigo,7,1)
WHEN SUBSTRING(Codigo,5,1)<>0 and SUBSTRING(Codigo,6,1)=0 and SUBSTRING(Codigo,7,1)<>0
THEN SUBSTRING(Codigo,5,1)+'0'+SUBSTRING(Codigo,7,1)
WHEN SUBSTRING(Codigo,5,1)<>0 and SUBSTRING(Codigo,6,1)=0 and SUBSTRING(Codigo,7,1)=0
THEN SUBSTRING(Codigo,5,1)+'00'
WHEN SUBSTRING(Codigo,5,1)=0 and SUBSTRING(Codigo,6,1)<>0 and SUBSTRING(Codigo,7,1)=0
THEN '0'+SUBSTRING(Codigo,6,1)+'0'
WHEN SUBSTRING(Codigo,5,1)<>0 and SUBSTRING(Codigo,6,1)<>0 and SUBSTRING(Codigo,7,1)=0
THEN SUBSTRING(Codigo,5,1)+SUBSTRING(Codigo,6,1)+'0'
WHEN SUBSTRING(Codigo,5,1)=0 and SUBSTRING(Codigo,6,1)=0 and SUBSTRING(Codigo,7,1)<>0
THEN '00'+SUBSTRING(Codigo,7,1)
WHEN SUBSTRING(Codigo,5,1)=0 and SUBSTRING(Codigo,6,1)<>0 and SUBSTRING(Codigo,7,1)<>0
THEN '0'+SUBSTRING(Codigo,6,1)+SUBSTRING(Codigo,7,1)
ELSE '000'END +'00' AS DIGI_NIVEL,
'abcdefghijklmnopqrtsu' as NUM_CTA,
datepart(year,FechaRegistro) as EJERCICIO,
'A' AS STATUS, Nombre AS NOMBRE,CASE WHEN CtaMayor=1 THEN 'A' ELSE 'D' END AS TIPO,
'N' AS DEPTSINO,
IdMoneda AS BANDMULTI,
'N' AS BANDAJT,
'123456789101112131415' AS CTA_PAPA,
'123456789101112131415' AS CTA_RAIZ,
0 AS NIVEL,
'abcdefghijklmnopqrtsu' AS CTA_COMP,
CASE WHEN Tipo IN('A','C','E','G','I','K') THEN 0 ELSE 1 END AS NATURALEZA
into #TABLA_BASE_CUENTAS
FROM #EXTR_SOLO_CUENTAS
WHERE Codigo > 500
order by Codigo
----Limpia los Columnas Faltantes
UPDATE #TABLA_BASE_CUENTAS SET NUM_CTA='',CTA_PAPA='',CTA_RAIZ='',CTA_COMP='',NIVEL=''
----Actualiza Columnas faltantes
UPDATE #TABLA_BASE_CUENTAS SET NIVEL=#DEFENE_NIVELES.NIVEl
FROM #DEFENE_NIVELES
WHERE CONVERT(NUMERIC,#DEFENE_NIVELES.Codigo_A) =CONVERT(NUMERIC,#TABLA_BASE_CUENTAS.Codigo)
UPDATE #TABLA_BASE_CUENTAS SET NUM_CTA=DIGI_NIVEL+'0000000000'+CONVERT(VARCHAR(1),NIVEL)
UPDATE #TABLA_BASE_CUENTAS SET CTA_PAPA= CASE WHEN NIVEL= 2 THEN SUBSTRING(NUM_CTA,1,4)+'00000000000000001'
WHEN NIVEL= 3 THEN SUBSTRING(NUM_CTA,1,6)+'000000000000002'
ELSE '-1' END
UPDATE #TABLA_BASE_CUENTAS SET CTA_RAIZ= SUBSTRING(NUM_CTA,1,4)+'00000000000000001'
-----------Crea tabla por Ejercicio
--SELECT * FROM CtEmpresa1.dbo.Afectaciones
DROP TABLE #PERIODOS
SELECT distinct Ejercicio
INTO #PERIODOS
from CtEmpresa1.dbo.Afectaciones
DECLARE @AÑO AS VARCHAR(30)
DECLARE @N_EJERC AS VARCHAR(30)
DECLARE @QUERY AS CHAR (4000)
DECLARE CREACION_TABLA_EJER CURSOR FOR
SELECT SUBSTRING(CONVERT(CHAR(4),EJERCICIO),3,2)AS AÑO ,'01' AS N_EJERC FROM #PERIODOS GROUP BY EJERCICIO
OPEN CREACION_TABLA_EJER
FETCH NEXT FROM CREACION_TABLA_EJER
INTO @AÑO,@N_EJERC
WHILE @@FETCH_STATUS=0
BEGIN
---Eliminas las Tablas si existen
SET @QUERY = 'DROP TABLE Empresas.dbo.CUENTAS'+ @AÑO + @N_EJERC
EXEC (@QUERY)
---Elimina tablas de Saldos de los periodos
SET @QUERY ='DROP TABLE Empresas.dbo.SALDOS'+ @AÑO + @N_EJERC
EXEC (@QUERY)
----Crea las tablas de los saldo
SET @QUERY= 'CREATE TABLE Empresas.dbo.SALDOS'+ @AÑO + @N_EJERC +
'(NUM_CTA VARCHAR(21) NOT NULL,EJERCICIO SMALLINT NOT NULL,INICIAL DOUBLE PRECISION DEFAULT 0,'+
'INICIALEX DOUBLE PRECISION DEFAULT 0,CARGO01 DOUBLE PRECISION DEFAULT 0,ABONO01 DOUBLE PRECISION DEFAULT 0,'+
'CARGOEX01 DOUBLE PRECISION DEFAULT 0,ABONOEX01 DOUBLE PRECISION DEFAULT 0,CARGO02 DOUBLE PRECISION DEFAULT 0,'+
'ABONO02 DOUBLE PRECISION DEFAULT 0,CARGOEX02 DOUBLE PRECISION DEFAULT 0,ABONOEX02 DOUBLE PRECISION DEFAULT 0,'+
'CARGO03 DOUBLE PRECISION DEFAULT 0,ABONO03 DOUBLE PRECISION DEFAULT 0,CARGOEX03 DOUBLE PRECISION DEFAULT 0,'+
'ABONOEX03 DOUBLE PRECISION DEFAULT 0,CARGO04 DOUBLE PRECISION DEFAULT 0,ABONO04 DOUBLE PRECISION DEFAULT 0,'+
'CARGOEX04 DOUBLE PRECISION DEFAULT 0,ABONOEX04 DOUBLE PRECISION DEFAULT 0,CARGO05 DOUBLE PRECISION DEFAULT 0,'+
'ABONO05 DOUBLE PRECISION DEFAULT 0,CARGOEX05 DOUBLE PRECISION DEFAULT 0,ABONOEX05 DOUBLE PRECISION DEFAULT 0,'+
'CARGO06 DOUBLE PRECISION DEFAULT 0,ABONO06 DOUBLE PRECISION DEFAULT 0,CARGOEX06 DOUBLE PRECISION DEFAULT 0,'+
'ABONOEX06 DOUBLE PRECISION DEFAULT 0,CARGO07 DOUBLE PRECISION DEFAULT 0,ABONO07 DOUBLE PRECISION DEFAULT 0,'+
'CARGOEX07 DOUBLE PRECISION DEFAULT 0,ABONOEX07 DOUBLE PRECISION DEFAULT 0,CARGO08 DOUBLE PRECISION DEFAULT 0,'+
'ABONO08 DOUBLE PRECISION DEFAULT 0,CARGOEX08 DOUBLE PRECISION DEFAULT 0,ABONOEX08 DOUBLE PRECISION DEFAULT 0,'+
'CARGO09 DOUBLE PRECISION DEFAULT 0,ABONO09 DOUBLE PRECISION DEFAULT 0,CARGOEX09 DOUBLE PRECISION DEFAULT 0,'+
'ABONOEX09 DOUBLE PRECISION DEFAULT 0,CARGO10 DOUBLE PRECISION DEFAULT 0,ABONO10 DOUBLE PRECISION DEFAULT 0,'+
'CARGOEX10 DOUBLE PRECISION DEFAULT 0,ABONOEX10 DOUBLE PRECISION DEFAULT 0,CARGO11 DOUBLE PRECISION DEFAULT 0,'+
'ABONO11 DOUBLE PRECISION DEFAULT 0,CARGOEX11 DOUBLE PRECISION DEFAULT 0,ABONOEX11 DOUBLE PRECISION DEFAULT 0,'+
'CARGO12 DOUBLE PRECISION DEFAULT 0,ABONO12 DOUBLE PRECISION DEFAULT 0,CARGOEX12 DOUBLE PRECISION DEFAULT 0,'+
'ABONOEX12 DOUBLE PRECISION DEFAULT 0,CARGO13 DOUBLE PRECISION DEFAULT 0,ABONO13 DOUBLE PRECISION DEFAULT 0,'+
'CARGOEX13 DOUBLE PRECISION DEFAULT 0,ABONOEX13 DOUBLE PRECISION DEFAULT 0,CARGO14 DOUBLE PRECISION DEFAULT 0,'+
'ABONO14 DOUBLE PRECISION DEFAULT 0,CARGOEX14 DOUBLE PRECISION DEFAULT 0,ABONOEX14 DOUBLE PRECISION DEFAULT 0,'+
'MOV01 SMALLINT DEFAULT 0,MOV02 SMALLINT DEFAULT 0,MOV03 SMALLINT DEFAULT 0,'+
'MOV04 SMALLINT DEFAULT 0,MOV05 SMALLINT DEFAULT 0,MOV06 SMALLINT DEFAULT 0,'+
'MOV07 SMALLINT DEFAULT 0,MOV08 SMALLINT DEFAULT 0,MOV09 SMALLINT DEFAULT 0,'+
'MOV10 SMALLINT DEFAULT 0,MOV11 SMALLINT DEFAULT 0,MOV12 SMALLINT DEFAULT 0,'+
'MOV13 SMALLINT DEFAULT 0,MOV14 SMALLINT DEFAULT 0);'
EXEC (@QUERY)
---Crea las Tablas
SET @QUERY = 'CREATE TABLE Empresas.dbo.CUENTAS' + @AÑO + @N_EJERC+
'(NUM_CTA VARCHAR(21) NOT NULL,STATUS VARCHAR(1),'+
'TIPO VARCHAR(1), NOMBRE VARCHAR(40), DEPTSINO VARCHAR(1),'+
'BANDMULTI SMALLINT,BANDAJT VARCHAR(1),CTA_PAPA VARCHAR(21),'+
'CTA_RAIZ VARCHAR(21), NIVEL SMALLINT, CTA_COMP VARCHAR(21),'+
'NATURALEZA SMALLINT)'
EXEC (@QUERY)
----Se Agregan las Cuentas a la tabla creada
SET @QUERY = 'INSERT INTO Empresas.dbo.CUENTAS'+ @AÑO + @N_EJERC+
'(NUM_CTA,STATUS,TIPO,NOMBRE,DEPTSINO,BANDMULTI,BANDAJT,'+
'CTA_PAPA,CTA_RAIZ,NIVEL,CTA_COMP,NATURALEZA)'+
'SELECT CONVERT(VARCHAR(21),NUM_CTA) AS NUM_CTA,CONVERT(VARCHAR(1),STATUS) AS STATUS,'+
'CONVERT(VARCHAR(1),TIPO) AS TIPO,CONVERT(VARCHAR(40),NOMBRE) AS NOMBRE,'+
'CONVERT(VARCHAR(1),DEPTSINO) AS DEPTSINO ,CONVERT(SMALLINT,BANDMULTI) AS BANDMULTI ,CONVERT(VARCHAR(1),BANDAJT) AS BANDAJT,'+
'CONVERT(VARCHAR(21),CTA_PAPA)AS CTA_PAPA,CONVERT(VARCHAR(21),CTA_RAIZ) AS CTA_RAIZ,'+
'CONVERT(SMALLINT,NIVEL) AS NIVEL,CONVERT(VARCHAR(21),CTA_COMP) AS CTA_COMP,CONVERT(SMALLINT,NATURALEZA) AS NATURALEZA '+
'FROM #TABLA_BASE_CUENTAS'
EXEC (@QUERY)
-----Inserta los saldos en Ceros
SET @QUERY= 'INSERT INTO Empresas.dbo.SALDOS'+ @AÑO + @N_EJERC+
'(NUM_CTA,EJERCICIO,'+
'INICIAL,INICIALEX,CARGO01,ABONO01,CARGOEX01,'+
'ABONOEX01,CARGO02,ABONO02,CARGOEX02,ABONOEX02,CARGO03,'+
'ABONO03,CARGOEX03,ABONOEX03,CARGO04,ABONO04,CARGOEX04,'+
'ABONOEX04,CARGO05,ABONO05,CARGOEX05,ABONOEX05,CARGO06,'+
'ABONO06,CARGOEX06,ABONOEX06,CARGO07,ABONO07,CARGOEX07,'+
'ABONOEX07,CARGO08,ABONO08,CARGOEX08,CARGO09,ABONO09,'+
'CARGOEX09,ABONOEX09,CARGO10,ABONO10,CARGOEX10,ABONOEX10,'+
'CARGO11,ABONO11,CARGOEX11,ABONOEX11,CARGO12,ABONO12,'+
'CARGOEX12,ABONOEX12,CARGO13,ABONO13,CARGOEX13,ABONOEX13,'+
'CARGO14,ABONO14,CARGOEX14,ABONOEX14,MOV01,MOV02,MOV03,'+
'MOV04,MOV05,MOV06,MOV07,MOV08,MOV09,MOV10,MOV11,'+
'MOV12,MOV13,MOV14)'+
'SELECT CONVERT(VARCHAR(21),NUM_CTA) AS NUM_CTA,CONVERT(SMALLINT,EJERCICIO) AS EJERCICIO,'+
'0 AS INICIAL,0 AS INICIALEX,0 AS CARGO01,0 AS ABONO01,0 AS CARGOEX01,'+
'0 AS ABONOEX01,0 AS CARGO02,0 AS ABONO02,0 AS CARGOEX02,0 AS ABONOEX02,0 AS CARGO03,'+
'0 AS ABONO03,0 AS CARGOEX03,0 AS ABONOEX03,0 AS CARGO04,0 AS ABONO04,0 AS CARGOEX04,'+
'0 AS ABONOEX04,0 AS CARGO05,0 AS ABONO05,0 AS CARGOEX05,0 AS ABONOEX05,0 AS CARGO06,'+
'0 AS ABONO06,0 AS CARGOEX06,0 AS ABONOEX06,0 AS CARGO07,0 AS ABONO07,0 AS CARGOEX07,'+
'0 AS ABONOEX07,0 AS CARGO08,0 AS ABONO08,0 AS CARGOEX08,0 AS CARGO09,0 AS ABONO09,'+
'0 AS CARGOEX09,0 AS ABONOEX09,0 AS CARGO10,0 AS ABONO10,0 AS CARGOEX10,0 AS ABONOEX10,'+
'0 AS CARGO11,0 AS ABONO11,0 AS CARGOEX11,0 AS ABONOEX11,0 AS CARGO12,0 AS ABONO12,'+
'0 AS CARGOEX12,0 AS ABONOEX12,0 AS CARGO13,0 AS ABONO13,0 AS CARGOEX13,0 AS ABONOEX13,'+
'0 AS CARGO14,0 AS ABONO14,0 AS CARGOEX14,0 AS ABONOEX14,0 AS MOV01,0 AS MOV02,0 AS MOV03,'+
'0 AS MOV04,0 AS MOV05,0 AS MOV06,0 AS MOV07,0 AS MOV08,0 AS MOV09,0 AS MOV10,0 AS MOV11,'+
'0 AS MOV12,0 AS MOV13,0 AS MOV14 FROM #TABLA_BASE_CUENTAS'
EXEC (@QUERY)
FETCH NEXT FROM CREACION_TABLA_EJER
INTO @AÑO,@N_EJERC
END
CLOSE CREACION_TABLA_EJER
DEALLOCATE CREACION_TABLA_EJER
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.
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:
http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html
http://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatemen...
http://www.javamexico.org/foros/java_standard_edition/ayuda_con_resultse...
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!!