############################################################
# SQL Visor, v0.1.0
#
# Script para ejecutar consultas/acciones SQL individuales
# JMEScript 0.2.0
############################################################
# Miguel Alejandro Moreno Barrientos, (C)2020-2021
############################################################
# EXTERNAL VARS:
# + mi_host: opcional
# + user: opcional
# + password: opcional
# + id_conexion: opcional
# + mi_consulta: opcional
############################################################
# obtener host
si indefinido(['mi_host']) inicio:
ctx2d leer en mi_host
> tipo 'texto'
> msj 'Introduzca host.
>Ejemplo;
>jdbc:mysql://localhost/mibd'
si mi_host = __error1__ inicio: # cancelada entrada de datos
devolver
fin
fin
# obtener usuario
si indefinido(['user']) inicio:
ctx2d leer en user
> tipo 'texto'
> msj 'Introduzca user.
>Ejemplo; root
O nada si
> no hay usuario'
si user = __error1__ inicio: # cancelada entrada de datos
devolver
fin
fin
# obtener clave
si indefinido(['password']) inicio:
ctx2d leer en password
> tipo 'texto'
> msj 'Introduzca password.
>Ejemplo; 1234
O nada si
> no hay password'
si password = __error1__ inicio: # cancelada entrada de datos
devolver
fin
fin
# definir ID de la conexión
id_conexion := indefinido('id_conexion','default_con')
# -- Intentar conectar --
sql conectar
> exito en ex_conectado
> id id_conexion
> host mi_host
> usuario user
> clave password
si ex_conectado = verdadero inicio: # conexión correcta
# lectura de consultas
mientras indefinido(['mi_consulta']) inicio:
# leer siguiente consulta
ctx2d leer en mi_consulta
> tipo 'texto'
> msj 'Introduzca consulta.
>Ejemplos;
>create database copia
>use empresa_bd
>select * from emp
>'
si mi_consulta = __error1__ inicio: # cancelada entrada de datos
devolver
fin
id_sentencia := indefinido('id_sentencia','default_sent')
# ejecutar consulta
sql ejecutar
> exito en ex_ejec
> id id_conexion
> sentencia id_sentencia
> consulta mi_consulta
# consulta con éxito (devuelve un booleano)
si esbooleano(ex_ejec) inicio:
# la consulta es una selección (verdadero)
si ex_ejec inicio:
data, registros :== [falso,0]
mientras data != nulo inicio:
sql resultado
> id id_conexion
> sentencia id_sentencia
> columnas '*'
> registro en data
si data != nulo inicio:
si estexto(data) inicio: # msj de error
imprimir msj data
imprimir
romper # mientras
fin
si no inicio: # imprimir registro
imprimir vertical data
registros++
fin
fin
si no inicio:
imprimir msj format('-- %s registros leídos --',
> [registros])
imprimir
fin
fin
fin
# consulta de acción (falso)
si no inicio:
sql resultado
> id id_conexion
> sentencia id_sentencia
> columnas nulo
> registro en data
si data != nulo inicio:
imprimir msj format( '-- %s filas afectadas --', [data] )
imprimir
fin
fin # consulta de acción
fin # si esbooleano
# error en consulta (texto de error), mostrar mensaje de error
si no inicio:
imprimir msj 'Error en consulta: ' + ex_ejec
imprimir
fin
# pregunta SI/NO a usuario por más consultas
ctx2d leer en continua
> msj '¿Más consultas?'
si continua = verdadero inicio:
mi_consulta :=
fin
fin # mientras
# cerrar BD
sql cerrar
> exito en cerrado
> id id_conexion
imprimir msj format(if(cerrado,
> 'BD \'%s\' cerrada.',
> 'Error al cerrar \'%s\''),
> [id_conexion])
fin
# -- error en conexión --
si no inicio:
imprimir msj ex_conectado
fin