<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho una funzione chiamata tabella_esiste .Gli passi un nome di tabella come stringa e restituisce true se la tabella esiste, false in caso contrario.Di recente ho deciso di aggiornarlo controllando se l'argomento di input fosse anche associato a qualcosa, ma non gli piace.
Per esempio:
è vuoto ( xyz )
Restituisce un 1 nel registro, il che significa che xyz non è associato a nulla.Ma se ci provo
tabella_esiste ( xyz )
ottengo questo messaggio di errore:
ERRORE: nome irrisolto: xyz in accesso o valutazione di 'xyz' , xyz
Ecco la funzione:
tabella_esiste = Funzione ( { nome_tabella } ,
{ Locale predefinito } ,
tbl_exists_flag = 0 ;
Se ( ! è vuoto ( nome_tabella ) ,
// Passa su tutte le tabelle e verifica se questa esiste
num_tabelle = ntable () ;
Per ( io = 1 , io <= num_tabelle , io ++,
un_nome = Tabella dati ( io ) << Ottieni nome ;
Se ( un_nome == nome_tabella ,
tbl_exists_flag = 1 ;
rottura () ; // salta fuori dal giro ora che abbiamo trovato la tabella
) ;
) ;
) ;
tbl_exists_flag ;
) ;
La variabile xyz deve essere valutata in modo che il suo valore possa essere passato alla funzione.
Posso pensare a due modi per gestirlo. Se stai usando una determinata variabile, puoi assegnarla a Empty() all'inizio dello script. xyz = Vuoto(). Se in seguito ottiene un nome, passerà attraverso; se non riceve mai un nome, allora è vuoto.
L'altro modo sarebbe avvolgere la chiamata di funzione in un try e gestire il caso di una variabile non definita prima di passarla alla funzione. try(table_exists(xyz), "nessun nome tabella")
La funzione table_exists è di uso generale, quindi volevo gestire la situazione se veniva chiamata con una variabile vuota con garbo.
Penso che il messaggio di errore sia presente perché stai passando xyz (una variabile JSL non definita) alla funzione. Penso che JSL stia tentando di analizzare xyz (prima di eseguire il codice della tua funzione) e fallisce perché è vuoto. Prova a mettere xyz tra virgolette nella tua chiamata di funzione:
tabella_esiste("xyz")