<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />tengo una funcion llamada tabla_existe .Le pasa un nombre de tabla como una cadena y devuelve verdadero si la tabla existe, falso si no.Recientemente decidí actualizarlo comprobando si el argumento de entrada estaba vinculado a algo, pero no le gusta.
Por ejemplo:
esta vacio ( xyz )
Devuelve un 1 en el registro, lo que significa que xyz no está vinculado a nada.pero si lo intento
tabla_existe ( xyz )
Recibo este mensaje de error:
ERROR: Nombre no resuelto: xyz en acceso o evaluación de 'xyz', xyz
Aquí está la función:
tabla_existe = Función ( { nombre de la tabla } ,
{ Local predeterminado } ,
tbl_exists_bandera = 0 ;
si ( ! esta vacio ( nombre de la tabla ) ,
// Recorrer todas las tablas y ver si esta existe
num_tablas = mesa () ;
Para ( i = 1 , i <= num_tablas , i ++,
un_nombre = Tabla de datos ( i ) << Obtener nombre ;
si ( un_nombre == nombre de la tabla ,
tbl_exists_bandera = 1 ;
romper () ; // salta del bucle ahora que encontramos la tabla
) ;
) ;
) ;
tbl_exists_bandera ;
) ;
La variable xyz debe evaluarse para que su valor pueda pasarse a la función.
Puedo pensar en dos maneras de manejar esto. Si está utilizando una variable determinada, puede asignarla a Empty() al comienzo del script. xyz = Vacío(). Si luego recibe un nombre, entonces pasará; si nunca recibe un nombre, entonces está vacío.
La otra forma sería envolver la llamada a la función en un intento de manejar el caso de una variable indefinida antes de pasarla a la función. try(table_exists(xyz), "sin nombre de tabla")
La función table_exists es de propósito general, por lo que quería manejar la situación si se invocaba con una variable vacía con gracia.
Creo que el mensaje de error está ahí porque está pasando xyz (una variable JSL indefinida) a la función. Creo que JSL está tratando de analizar xyz (antes de ejecutar el código de su función) y falla porque está vacío. Intente poner xyz entre comillas en su llamada de función:
tabla_existe("xyz")