MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Combinando o poder do SQL e instruções procedurais com o modo de compatibilidade Oracle do MariaDB


De volta ao MariaDB Server 10.3, adicionamos um novo modo SQL (SQL_MODE=ORACLE) para fornecer compatibilidade com um subconjunto do Oracle PL/SQL, uma extensão procedural para a Structured Query Language (SQL). Com o recente lançamento do MariaDB Community Server 10.6, continuamos nossa jornada para expandir a compatibilidade PL/SQL do MariaDB adicionando várias funções como ROWNUM() , ADD_MONTHS() e TO_CHAR() . Isso é muito legal por vários motivos, mas para começar, o MariaDB continua sendo o único banco de dados a implementar a compatibilidade com Oracle de código aberto, portanto, essa funcionalidade está disponível para todos. Para realmente entender o que isso significa, é importante darmos um pequeno passo atrás para que você saiba por que nós começamos por este caminho para começar.


O poder da programação procedimental e declarativa


Ao combinar o poder de manipulação de dados da linguagem SQL com recursos processuais, os desenvolvedores têm uma infinidade de novas e empolgantes oportunidades. Usando PL/SQL, os desenvolvedores têm a capacidade de executar instruções SQL que se concentram na abordagem declarativa de “o que fazer”, ao mesmo tempo em que recebem a capacidade de controlar o fluxo de operações, ou “como fazer”.

Espere o que? OK, considere o seguinte tradicional instrução SQL.
SELECT id, name, has_kids FROM friends;

Simples, elegante e eficaz. SQL é uma linguagem bonita, mas tem suas limitações. Por exemplo, e se você quiser percorrer os resultados retornados do SELECT execução da declaração? E então, ao analisar os resultados, verifique cada resultado usando uma instrução condicional (por exemplo, se has_kids é true) para que você possa realizar operações específicas com base nessas condições?

Nota rápida :Isso é puramente hipotético. Tenho certeza de que se você tem amigos com filhos e amigos sem filhos, você os trata da mesma forma. Mas, por causa deste exemplo, digamos que não. OK? OK legal.

Mas com todas essas iterações e condições acontecendo, é possível que você encontre um erro. Não seria bom se você pudesse lidar com erros (ou seja, exceções) diretamente no lado do banco de dados, sem ter que primeiro retornar os resultados originais de volta ao código do aplicativo a ser processado? Bem, isso é muito ruim, porque você está usando o SQL simples e nenhuma dessas coisas é possível.

Não tenha medo! Em vez disso, venha comigo para o maravilhoso mundo do PL/SQL!

Através do uso de algo conhecido como bloco PL/SQL, você pode combinar o SQL que você conhece e adora com os recursos processuais que permitirão controlar o fluxo de operações usando recursos como a capacidade de declarar variáveis, manipular condições, executar loops através de dados, gerenciar exceções e muito mais.



Os blocos PL/SQL são tratados no MariaDB Server, onde as instruções SQL e procedurais são analisadas e executadas de acordo.



Bem legal, certo? Fica muito melhor! Mas voltando ao nosso exemplo anterior. Você pode usar um único bloco PL/SQL para realizar tudo o que indiquei antes.

Por exemplo:
DELCARE 
	CURSOR c IS SELECT id, name, has_kids FROM friends;
BEGIN 
	FOR friend_row IN c LOOP
		IF friend_row.has_kids == true THEN
			/* Do something */
		ELSE
			/* Do something else */
		END IF;
	END LOOP;
EXCEPTION
	WHEN no_data_found THEN
		/* Handle no data found */
	WHEN others THEN
		/* Handle all other kinds of exceptions */
END;


Saiba mais


Coisas poderosas, certo? Bem, este post do blog é realmente apenas a ponta do iceberg. Uma coisinha para abrir o apetite, se quiser. Mas se você quiser saber mais, eu recomendo assistir a um webinar que apresentamos recentemente, MariaDB and PL/SQL:Combinando o poder do SQL e instruções procedurais. Nele, mergulhamos em muito mais detalhes sobre o motivo pelo qual tornamos nossa missão adicionar e expandir o suporte PL/SQL e incluímos uma variedade de exemplos e uma demonstração de codificação ao vivo, que dá a você uma visão em primeira mão de como você pode usar PL/SQL dentro do MariaDB! Boa codificação, amigos!