Avalados por :

Como excluir tabelas no HANA sem erros: SE EXISTIR, EXCLUIR TABELA

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

Isso pode parecer uma pergunta muito boba, mas tenho estado revisando os PDFs do HANA e não consigo encontrar a resposta que estou procurando.

Atualmente estou no processo de realizar um POC do HANA e estou tentando criar um grande script SQL que criará várias tabelas e as preencherá com alguns dados.

Sendo obsessivo-compulsivo, gosto que meus scripts sejam executados sem erros. A parte em que preciso de ajuda é na parte do DROP TABLE do script.

Tenho as linhas DROP TABLE lá, mas se uma tabela não existir previamente, recebo uma mensagem de erro.

O HANA tem o equivalente de um IF EXISTS ..... DROP TABLE ??

Qualquer ajuda seria muito apreciada!

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

4 Respuestas

0
Cargando...

Ravi:

Como siempre, você é incrível! Ótimo código!

Obrigado por testá-lo tão rapidamente. Eu tinha na minha lista de tarefas para tentar mais tarde esta noite... Agora desapareceu...

Saudações,

Rama

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

Como mencioné, 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), -- Nome do esquema que contém a tabela a ser eliminada
IN† v_in_table†† VARCHAR† (30)††† -- Nome da tabela a ser eliminada
)
LANGUAGE SQLSCRIPT
AS
v_tab_exists smallint := 0;
BEGIN

-- Criar uma tabela fictícia
CREATE TABLE t_dummy (v_tname VARCHAR(30));

-- Inserir na tabela fictícia um valor de TABLES com 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 quantos registros foram inseridos
-- Se a tabela existir, ROWCOUNT será 1, caso contrário 0

v_tab_exists := ::ROWCOUNT;

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

-- Excluir a tabela fictícia

DROP TABLE t_dummy;
END;

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

Acho que me adiantei demais nisso.

Como mencionou, você precisa de um código completamente livre de ERROS que não gere nenhuma exceção (o que não tenho certeza de como lidar no HANA neste momento, como por exemplo "Dados não encontrados", "Exceção SQL", etc.).

Para conseguir isso, acredito que terá que escrever um programa personalizado para excluir a tabela com o nome da tabela e o esquema como parâmetros de entrada e SQL dinâmico com o comando "EXEC 'DROP TABLE '||<nome_tabela_entrada>;.

Não tenho certeza se estou complicando demais isso, mas vale a pena tentar.

Cumprimentos,

Ravi

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

Acredito que você pode usar TABELAS e procurar a existência da tabela (coluna = nome_da_tabela) para ser removida.

Você pode escrever um procedimento e também utilizar EXISTS (se necessário).

Saudações,

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?