Buenos días,
necesito crear una tabla temporal en mi base de datos ‘prs1’ en MySQL. He probado a crear este método llamado ‘BDTablaTemporal_Crear’:
Dim stmSQL As String
stmSQL = "Create Temporary Table If Not Exists prs1.tmp_Inventario(ean13 VarChar(13))"
Try
BDProductos.ExecuteSQL( stmSQL )
Return True
Catch error As DatabaseException
MessageBox("DB Error: " + error.Message)
Return False
End Try
El método anterior se invoca desde este otro:
BDIniciarTransaccionProd
If Not BDTablaTemporal_Crear Then
MsgBox("Se ha producido un error al crear la tabla temporal: " + BDProductos.ErrorMessage)
BDCancelarTransaccionProd //Cancelamos la transacción
Return
End If
BDFinalizarTransaccionProd
MsgBox("La tabla temporal ha sido creada con éxito")
El caso es que cuando ejecuto el proyecto nada falla pero si compruebo desde la base de datos vía Valentina Studio si se ha creado la tabla, me dice que NO EXISTE.
Es curioso porque desde la consola de VStudio ejecuto la sentencia “Create Temporary Table If Not Exists prs1.tmp_Inventario(ean13 VarChar(13))” y funciona perfectamente.
Lo siguiente que he hecho ha sido crear un ‘stored procedure’ (llamado CrearTablaTemporal) directamente en la base de datos para borrar la tabla temporal si existe y sino que la cree pero, de nuevo funciona perfectamente desde VStudio y cuando lo corro desde Xojo parece que no da error pero si consulto la tabla NO EXISTE. Utilizo este método para llamar al procedimiento :
Dim stmSQL As String
stmSQL = "CALL CrearTablaTemporal('tmp_Inventario')"
Try
BDProductos.ExecuteSQL( stmSQL )
Return True
Catch error As DatabaseException
MessageBox("DB Error: " + error.Message)
Return False
End Try
¿A alguien se le ocurre qué puede estar pasando?. ¿Se pueden crear tablas temporales desde Xojo? Estoy utilizando la última release 2020r1. Sé que las tablas temporales sólo pueden verse desde el usuario que las crea pero he utilizado siempre el mismo usuario (para crear la tabla y consultarla).
Muchas gracias.
Sergio