<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>sql on Abapinho</title><link>https://abapinho.com/tags/sql/</link><description>Recent content in sql on Abapinho</description><generator>Hugo -- gohugo.io</generator><language>pt</language><copyright>&amp;copy;2009-2026 Nuno Godinho</copyright><lastBuildDate>Mon, 12 Jun 2023 09:00:00 +0100</lastBuildDate><atom:link href="https://abapinho.com/tags/sql/index.xml" rel="self" type="application/rss+xml"/><item><title>SELECT SINGLE vs SELECT UP TO 1 ROWS</title><link>https://abapinho.com/2023/06/select-single-vs-select-up-to-1-rows/</link><pubDate>Mon, 12 Jun 2023 09:00:00 +0100</pubDate><guid>https://abapinho.com/2023/06/select-single-vs-select-up-to-1-rows/</guid><description>&lt;p>É pá, esta é uma daquelas discussões infinitas que nunca chegarão a lado nenhum. Igual a tentar decidir se mereces continuar a viver se meteres ananás na pizza ou queijo Filadélfia no sushi.&lt;/p></description></item><item><title>SELECT de registo único com chave incompleta</title><link>https://abapinho.com/2022/11/up-to-1-rows/</link><pubDate>Mon, 28 Nov 2022 09:00:00 +0000</pubDate><guid>https://abapinho.com/2022/11/up-to-1-rows/</guid><description>&lt;p>Durante anos explicaram-me que se deve usar &lt;code>UP TO 1 ROWS&lt;/code> quando a chave não é completa. A minha professora primária disse que devemos sempre perguntar porquê: porquê? Ninguém explica.&lt;/p></description></item><item><title>SELECT FOR UPDATE</title><link>https://abapinho.com/2022/05/select-for-update/</link><pubDate>Mon, 23 May 2022 09:09:09 +0100</pubDate><guid>https://abapinho.com/2022/05/select-for-update/</guid><description>&lt;p>Quando vais modificar registos na base de dados é comum fazeres primeiro um &lt;code>SELECT&lt;/code> para ver como as coisas são e depois então fazeres &lt;code>UPDATE&lt;/code> como as coisas serão.&lt;/p></description></item><item><title>Classe para garantir segurança em programação dinâmica</title><link>https://abapinho.com/2017/07/classe-garantir-seguranca-programacao-dinamica/</link><pubDate>Wed, 26 Jul 2017 09:00:33 +0000</pubDate><guid>https://abapinho.com/2017/07/classe-garantir-seguranca-programacao-dinamica/</guid><description>&lt;p>No outro dia encontrei um programa que gerava um comando SQL com base em várias variáveis fixadas no código. Mas, por distracção ou ignorância, a alminha que fez aquilo achou que fazia sentido associar essas variáveis a símbolos de texto. Algo assim:&lt;/p></description></item><item><title>ABAP Code PushDown em HANA</title><link>https://abapinho.com/2016/07/abap-code-pushdown-on-sqlscript/</link><pubDate>Mon, 25 Jul 2016 09:00:10 +0000</pubDate><guid>https://abapinho.com/2016/07/abap-code-pushdown-on-sqlscript/</guid><description>&lt;p>[Artigo por Artur Moreira]&lt;/p>
&lt;p>A SAP introduziu a partir da versão 7.4 do ABAP o conceito de Code PushDown, que significa utilizar mais a base de dados para cálculos (agregação de dados, somas e vários cálculos prévios).&lt;/p></description></item><item><title>SQL nativo</title><link>https://abapinho.com/2016/03/native-sql/</link><pubDate>Mon, 28 Mar 2016 09:00:01 +0000</pubDate><guid>https://abapinho.com/2016/03/native-sql/</guid><description>&lt;p>Por vezes o SQL do ABAP não te permite fazer coisas que conseguirias fazer usando SQL nativo da base de dados. É possível fazê-lo.&lt;/p></description></item><item><title>ZTOAD - Editor de SQL</title><link>https://abapinho.com/2016/02/ztoad-editor-de-sql/</link><pubDate>Mon, 01 Feb 2016 09:00:10 +0000</pubDate><guid>https://abapinho.com/2016/02/ztoad-editor-de-sql/</guid><description>O Toad é uma ferramenta muito famosa no mundo SQL que permite construir e executar queries SQL de forma fácil e interactiva. E agora, graças ao senhor Sébastien HERMANN, o SAP tem uma versão simplificada desta ferramenta maravilha.
Ele explica.
Obrigado Sérgio Fraga por descobrires isto.
O Abapinho saúda-vos.</description></item><item><title>SELECT de um conjunto de valores conhecidos</title><link>https://abapinho.com/2015/12/select-de-um-conjunto-de-valores-conhecidos/</link><pubDate>Mon, 14 Dec 2015 09:00:36 +0000</pubDate><guid>https://abapinho.com/2015/12/select-de-um-conjunto-de-valores-conhecidos/</guid><description>&lt;p>Pedem-te para seleccionares registos cujo critério é um conjunto de meia dúzia de códigos que são conhecidos e nunca vão mudar. Sabias que podes fazer tudo logo no SELECT?&lt;/p></description></item><item><title>CASE dentro de SELECT (brevemente em todos os SAPs)</title><link>https://abapinho.com/2015/07/case-dentro-de-select-brevemente-em-todos-os-saps/</link><pubDate>Mon, 20 Jul 2015 09:00:42 +0000</pubDate><guid>https://abapinho.com/2015/07/case-dentro-de-select-brevemente-em-todos-os-saps/</guid><description>Prepara-te porque em breve terás muitas surpresas. É que o ABAP está a aprender troques novos. Repara neste:
CONSTANTS: lc_menina TYPE STRING VALUE ‘MENINA&amp;#39;, lc_menino TYPE STRING VALUE ‘MENINO’, lc_senhor TYPE STRING VALUE ’SENHOR’, lc_senhora TYPE STRING VALUE ‘SENHORA’. SELECT nome, CASE WHEN sexo_id = ‘M&amp;#39; AND idade &amp;lt; 18 THEN @lc_menino WHEN sexo_id = ‘F’ AND idade &amp;lt; 18 THEN @lc_menina WHEN sexo_id = ‘M&amp;#39; AND idade &amp;gt;=18 THEN @lc_senhor WHEN sexo_id = ‘F’ AND idade &amp;gt;=18 THEN @lc_senhora END AS titulo FROM zpessoa WHERE pessoa_id = @pessoa_id INTO CORRESPONDING FIELDS OF @lt_pessoas.</description></item><item><title>INNER JOIN vs FOR ALL ENTRIES vs RANGES artificiais</title><link>https://abapinho.com/2014/11/inner-join-vs-for-all-entries-vs-ranges-artificiais/</link><pubDate>Tue, 25 Nov 2014 09:00:13 +0000</pubDate><guid>https://abapinho.com/2014/11/inner-join-vs-for-all-entries-vs-ranges-artificiais/</guid><description>Uma vez que as operações de dados estão muito mais optimizadas no servidor de base de dados do que no ABAP, é sempre preferível o primeiro. FOR ALL ENTRIES só deve ser usado quando não se conseguir fazer INNER JOIN (como com a BSEG por exemplo). Quando possível, usar RANGES artificiais é preferível a usar FOR ALL ENTRIES mas é preciso cuidado para não ultrapassar o limite do parser de SQL.</description></item><item><title>Não farás SELECT *</title><link>https://abapinho.com/2014/09/nao-facas-select-asterisco/</link><pubDate>Thu, 04 Sep 2014 11:25:03 +0000</pubDate><guid>https://abapinho.com/2014/09/nao-facas-select-asterisco/</guid><description>Tenta seleccionar sempre apenas os campos que vais realmente usar. Escolher todos é um desperdício de recursos. Excepção feita ao uso das FM *_SINGLE_READ que, embora leiam os campos todos, fazem cache dos dados, sendo por isso ainda assim mais rápidos de usar quando usados múltiplas vezes com a mesma chave. Se queres apenas verificar que um registo existe, selecciona apenas um campo, e se possível aquele que estás a usar como critério, evitando assim declarares uma variável extra.</description></item><item><title>SELECT dentro de SELECT</title><link>https://abapinho.com/2014/05/select-dentro-de-select/</link><pubDate>Mon, 26 May 2014 09:00:03 +0000</pubDate><guid>https://abapinho.com/2014/05/select-dentro-de-select/</guid><description>&lt;p>Provavelmente por razões históricas, os programadores ABAP não exploram as possibilidades do SQL. Muitos há que em vez de usarem INNER JOINs, ainda julgam que é mais rápido fazer vários SELECTs para tabelas internas e depois trabalhar os dados em ABAP. Mas a verdade é que, mesmo que se haja excepções, a regra é: quanto menos acessos à base de dados, melhor a performance. E faz sentido porque, afinal, porque foram escritas explicitamente para isso, as bases de dados relacionais são muito mais peritas em processar dados relacionais do que um programa ABAP.&lt;/p>
&lt;p>Mas claro que há coisas que, pela sua complexidade, não podem ser feitas com um simples INNER JOIN. Ainda assim, algumas dessas coisas podem ser feitas num único SELECT.&lt;/p></description></item><item><title>SELECT... ORDER BY PRIMARY KEY</title><link>https://abapinho.com/2013/11/select-order-by-primary-key/</link><pubDate>Mon, 18 Nov 2013 09:00:43 +0000</pubDate><guid>https://abapinho.com/2013/11/select-order-by-primary-key/</guid><description>Embora já use ABAP desde 1998, todas as semanas aprendo novas funcionalidades ou opções ou mesmo novos comandos. Parece mentira.
Hoje partilho uma pequena opção do SQL que descobri recentemente:
SELECT * FROM T001 INTO TABLE T_T001 ORDER BY PRIMARY KEY. O SELECT e o FROM e o INTO e o TABLE e mesmo o ORDER BY já os conheço há muito tempo. Só não conhecia é o PRIMARY KEY.</description></item><item><title>SELECT comparando 2 campos da própria tabela</title><link>https://abapinho.com/2013/11/select-propria-tabela/</link><pubDate>Mon, 04 Nov 2013 09:00:00 +0000</pubDate><guid>https://abapinho.com/2013/11/select-propria-tabela/</guid><description>&lt;p>Esta dica é simples e rápida mas aposto 200$482 em como poucos a sabem.&lt;/p></description></item><item><title>Mais RANGEs, menos SELECTs</title><link>https://abapinho.com/2012/06/mais-ranges-menos-selects/</link><pubDate>Mon, 04 Jun 2012 09:00:33 +0000</pubDate><guid>https://abapinho.com/2012/06/mais-ranges-menos-selects/</guid><description>&lt;p>O dicionário diz o seguinte do verbete &amp;ldquo;estilo&amp;rdquo;: &amp;ldquo;conjunto de aspectos formais e recursos expressivos que caracterizam um texto&amp;rdquo;.&lt;/p>
&lt;p>Dá mais gosto ler textos com estilo do que textos sem estilo. Se o ABAP é uma linguagem, um programa em ABAP é um texto. Há programas que, no que toca ao estilo, parecem escritos com os pés; enquanto há outros que se poderia jurar que a pena que os escreveu deixou-se guiar pelas alvas mãos de uma qualquer donzela do século XVIII afligida por males de amor. Felizmente penso que não é possível escrever programas em ABAP tão pirosos quanto esta última frase.&lt;/p>
&lt;p>Aqui no Abapinho usa-se a etiqueta &amp;ldquo;estilo&amp;rdquo; para identificar artigos que falam sobre isso mesmo: estilo. Estes artigos tentam encontrar formas de melhorar o estilo dos programas ABAP. Esta é uma das etiquetas favoritas do Abapinho como podes ver &lt;a href="https://abapinho.com/tags/estilo/">aqui&lt;/a>. E isto que estás a ler é mais um desses artigos.&lt;/p>
&lt;p>Adiante.&lt;/p></description></item></channel></rss>