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
Avalados por :
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!
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
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;
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
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
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute