SQLScript é uma linguagem de banco de dados desenvolvida pela SAP. Ele é baseado no SQL padrão, mas adiciona recursos adicionais para explorar os recursos avançados do SAP HANA Cloud.
Aqui estão alguns dos principais recursos do SQL Script:
- SQLScript estende o SQL ANSI-92. Assim como outros fornecedores de banco de dados ampliam o SQL em seus bancos de dados, o SAP HANA estende o SQL usando SQLScript.
- O SQLScript permite que você acesse recursos específicos do SAP HANA, como tabelas de colunas, visões de informações parametrizadas, buffers delta, trabalho com vários conjuntos de resultados em paralelo, conversões de moeda integradas no nível do banco de dados, pesquisa de texto fuzzy, tipos de dados espaciais e bibliotecas de análise preditiva.
- SQLScript permite que os desenvolvedores enviem lógica intensiva de dados para o banco de dados.
- SQLScript incentiva os desenvolvedores a manter algoritmos usando um paradigma orientado a conjuntos, em vez de um registro em um paradigma de tempo.
- SQLScript, no entanto, permite looping através de resultados e usando a lógica if-then-else
- O SQLScript permite que você divida consultas complexas em várias instruções menores, simplificando assim sua codificação SQL e aprimorando o paralelismo por meio do otimizador.
Nota
A versão do SQL padrão em que o SQLScript é baseado é a versão popular ANSI-92, que é suportada por quase todos os bancos de dados.
Recursos adicionais do SQLScript incluem trabalhar com tabelas de colunas do SAP HANA Cloud, transferir parâmetros entre visões de cálculo e SQLScript, trabalhar com tipos de dados espaciais e bibliotecas de análise preditiva.
Desenvolver lógica empresarial com SQLScript
Nas abordagens cliente-servidor tradicionais, a lógica empresarial é definida e executada no servidor de aplicação utilizando linguagens de programação de aplicação como ABAP ou C++. Com o SAP HANA Cloud, grande parte dessa lógica agora pode ser definida usando SQLScript, que permite que o desenvolvedor defina e execute todas as tarefas de processamento de dados no banco de dados para obter um desempenho aprimorado.
O SQLScript permite que você use variáveis para dividir uma instrução SQL complexa grande em instruções menores e mais simples. Isso torna o código muito mais fácil de entender. Ele também ajuda no desempenho do SQL HANA Cloud porque muitas dessas instruções menores podem ser executadas em paralelo.
Assista a este vídeo para ver um exemplo:
No exemplo estudado, queremos descobrir qual editora tem mais livros:
12books_per_publisher = SELECT publisher, COUNT (*) AS num_books FROM BOOKS GROUP BY publisher;
publisher_with_most_books = SELECT * FROM :books_per_publisher WHERE num_books >= (SELECT MAX (num_books) FROM :books_per_publisher);O compilador e otimizador SQLScript determina como executar melhor essas instruções, seja usando uma expressão de subconsulta comum com dicas de banco de dados ou combinando isso em uma única consulta complexa. O código se torna mais fácil de escrever e entender, mais sustentável e a produtividade do desenvolvedor aumenta.
Ao dividir o SQLScript em instruções menores e preencher variáveis de tabela, você também espelha o modo como aprendeu a criar suas visões de cálculo. Assim como quando você começa a criar visões de cálculo em camadas, começando de baixo para cima, você faz o mesmo com seu código SQLScript. Considere que a sequência exata das suas etapas SQLScript não é necessariamente a ordem de tempo de execução, porque o otimizador irá sempre decidir sobre o melhor plano de execução. No entanto, o otimizador nunca alterará o resultado desejado. Isso também é válido para visões de cálculo.
O uso de variáveis
O uso de variáveis em instruções SQL não é especificado pelo SQL ANSI-92. No SAP HANA Cloud, o SQLScript implementa o conceito de variável como uma extensão para o SQL ANSI-92.
As variáveis podem ser declaradas, atribuídas e reutilizadas dentro de um script.
Uso de variáveis no SQLScript
Declarar uma variável
DECLARE <variable_name> <type> [NOT NULL] [= <value>]
Exemplo 1: DECLARE a int;
Exemplo 2: DECLARE b int = 0; (o valor é atribuído ao criar a variável)
Atribuir uma variável (definir o valor de uma variável)
<variable_name> = <value> or <expression>
Exemplo 1: a = 3;
Exemplo 2: b = select count(*) from baseTable;
Usar uma variável em uma expressão
:<variable_name> (com dois pontos) retorna o valor atual da variável
Exemplo: b = :a + 5; (atribui o valor de a + 5 a b)
Tipos de dados SQLScript
O SQLScript também adiciona tipos de dados extras para ajudar a resolver os recursos ausentes do SQL padrão, por exemplo, tipos de dados espaciais e tipos de dados de texto.
Tipos de dados ANSI-92 e SQLScript
| Classificação | Tipos de dados ANSI-92 padrão | Tipos de dados específicos de SQLScript |
|---|---|---|
| Data/hora | DATA, HORA, TIMESTAMP | SECONDDATE |
| Numérico | DECIMAL, INTEGER, SMALLINT, FLOAT, REAL, DOUBLE | TINYINT, BIGINT, SMALLDECIMAL |
| Cadeia de caracteres | CHAR, NCHAR, VARCHAR, NVARCHAR | ALPHANUM, SHORTTEXT |
| Binário | BINÁRIO, VARBINÁRIO | |
| Objeto grande | BLOB, CLOB, NCLOB, TEXT, BINTEXT | |
| Booleano | BOOLEANO | |
| Espacial | ST_POINT, ST_GEOMETRY |
Processamento de parâmetros de entrada definidos nas visões de cálculo com SQLScript
Quando você usa uma instrução select em SQLScript para consultar uma visão de cálculo que tem parâmetros de entrada, você usa a palavra-chave PLACEHOLDER com o nome do parâmetro de entrada empacotado em símbolos $$ e o valor que deseja transferir para o parâmetro de entrada - por exemplo:
- Transferência de parâmetros de entrada para a visão de cálculo
Use a palavra-chave PLACEHOLDER para transferir parâmetros de entrada para a visão de cálculo em uma instrução select:
Code Snippet1234SELECT "PRODUCT", sum("TAXED_AMOUNT") FROM "_SYS_BIC"."MyPackage/SalesResults" ('PLACEHOLDER' = ('$$Tax Amount$$', '17.5')) GROUP BY "PRODUCT"- Referência ao parâmetro de entrada no script SQL
No SQLScript, você faz referência ao parâmetro de entrada usando dois pontos:;
Code Snippet1Sales with tax = Sales Revenue * :Tax_Amount
Também é possível transferir parâmetros de saída gerados de um SQLScript para uma visão de cálculo usando o recurso de mapeamento de parâmetros.
