Avalados por :

Cómo eliminar tablas en HANA sin errores: IF EXISTS DROP TABLE

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 82 Vistas
0
Cargando...

Esto puede sonar como una pregunta muy tonta, pero he estado revisando los PDF de HANA y no logro encontrar la respuesta que estoy buscando.

Actualmente estoy en el proceso de realizar una POC de HANA y estoy tratando de crear un script SQL grande que creará múltiples tablas y las poblara con algunos datos.

Siendo OCD, me gusta que mis scripts se ejecuten sin errores. La parte en la que necesito ayuda es en la parte de DROP TABLE del script.

Tengo las líneas de DROP TABLE allí, pero si una tabla no existe previamente, recibo un mensaje de error.

¿HANA tiene el equivalente de un IF EXISTS ..... DROP TABLE ??

¡Cualquier ayuda sería muy apreciada!

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Ravi:

¡Como siempre, Eres Genial! ¡Buen código!

Gracias por probarlo tan rápido. Lo tenía en mi lista de tareas para intentarlo más tarde esta noche... Ahora ha desaparecido...

Saludos,

Rama

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Como dije, estoy complicando las cosas... pero qué demonios, podría intentar algo nuevo

=================================

drop procedure pr_drop_table;
CREATE PROCEDURE pr_drop_table (
IN  v_in_schema    VARCHAR  (30), -- Nombre del esquema que contiene la tabla a eliminar
IN  v_in_table   VARCHAR  (30)    -- Nombre de la tabla a eliminar
)
LANGUAGE SQLSCRIPT
AS
v_tab_exists smallint := 0;
BEGIN

-- Crear una tabla ficticia
CREATE TABLE t_dummy (v_tname VARCHAR(30));

-- Insertar en la tabla ficticia un valor de TABLES con table_name como parámetro

INSERT INTO t_dummy
SELECT table_name FROM TABLES
WHERE schema_name = :v_in_schema AND table_name = :v_in_table;

-- Verificar cuántos registros se insertaron
-- Si la tabla existe, ROWCOUNT será 1, de lo contrario 0

v_tab_exists := ::ROWCOUNT;

IF v_tab_exists > 0 THEN
EXEC 'DROP TABLE '||:v_in_table;
END IF;

-- Eliminar la tabla ficticia

DROP TABLE t_dummy;
END;

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Creo que me adelanté demasiado a esto.

Como mencionaste, necesitas un código completamente libre de ERRORES que no genere ninguna excepción (lo cual no estoy seguro de cómo manejar en HANA en este momento, como por ejemplo "No se encontraron datos", "Excepción SQL", etc.).

Para lograr esto, creo que tendrás que escribir un programa personalizado para eliminar la tabla con el nombre de la tabla y el esquema como parámetros de entrada y SQL dinámico con el comando "EXEC 'DROP TABLE '||<nombre_tabla_entrada>;.

No estoy seguro si estoy complicando demasiado esto, pero vale la pena intentarlo.

Saludos,

Ravi

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Creo que puedes utilizar TABLAS y buscar la existencia de la tabla (columna = nombre_de_la_tabla) para ser eliminada.

Puedes escribir un procedimiento y también utilizar EXISTS (si es necesario).

Saludos,

Ravi

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?