2 Preguntas separadas.soltando una tabla temporal global
estoy usando este script para eliminar una tabla [Resuelto]
BEGIN EXECUTE IMMEDIATE 'DROP TABLE_NAME'; DBMS_OUTPUT.PUT_LINE ('Global table TABLE_NAME Dropped'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE ('Global table TABLE_NAME Doesn''t exist.'); END; /
¿Hay alguna forma de diferenciar si la tabla "no existe" o que se está utilizando en algunos otras sesiones (en ese caso se bloquearía y no se podría eliminar). No estoy seguro si puedo ver que la tabla existe en user_tables. No estoy completamente consciente de los permisos.
He añadido este código ahora
WHEN OTHERS THEN
i_code := SQLCODE;
v_errm := SUBSTR(SQLERRM, 1, 64);
if i_code = -942 THEN
DBMS_OUTPUT.PUT_LINE ('TABLE_NAME doesn''t exist. Script will continue to create it');
ELSE
DBMS_OUTPUT.PUT_LINE ('Error dropping temporary table. The error code is ' || i_code || '- ' || v_errm);
END IF ;
2. Veo . al final de cada procedimiento como éste
END PROCEDURE_NAME;
.
/
sho err;
simplemente no entiendo por qué . está aquí. ¿Es sintaxis o qué?
¿Es la tabla realmente una tabla temporal global? ('create global temporary table .... ') Si es así, ¿por qué lo dejas caer? ¿Es esto parte de un script de instalación? De lo contrario, tal vez una tabla temporal global satisfaga sus necesidades, sin necesidad de descartarla. –
bien nos encontramos con el problema de "ya existe" y, de alguna manera, no está confirmado desde el entorno productino cuál es el estado de la tabla. Esta tabla no forma parte del script de instalación y forma parte del procedimiento por separado. –
No entiendo, ¿por qué se topó con un problema ya existente con una tabla temporal global? La tabla ya debería existir, y el código solo usa (insertar, eliminar, actualizar, etc.). –