193 lines
7.1 KiB
Markdown
193 lines
7.1 KiB
Markdown
|
|
# Biblioteca de Snippets: SQL
|
|||
|
|
|
|||
|
|
## Origem: Configuração do banco de dados Oracle
|
|||
|
|
```sql
|
|||
|
|
DECLARE AUX_USERCONNECTED VARCHAR2(30);
|
|||
|
|
BEGIN
|
|||
|
|
SELECT USER
|
|||
|
|
INTO AUX_USERCONNECTED
|
|||
|
|
FROM DUAL;
|
|||
|
|
IF (AUX_USERCONNECTED <> 'SYS') AND (AUX_USERCONNECTED <> 'SYSTEM') THEN
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_OBJECTS AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_OBJECTS WHERE OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_SYNONYMS AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_SYNONYMS WHERE OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_SEQUENCES AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_SEQUENCES WHERE SEQUENCE_OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_CONSTRAINTS AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_CONSTRAINTS WHERE OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_CONS_COLUMNS AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_CONS_COLUMNS WHERE OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_INDEXES AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_INDEXES WHERE OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_IND_COLUMNS AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_IND_COLUMNS WHERE TABLE_OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_TABLES AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_TABLES WHERE OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
EXECUTE IMMEDIATE ('CREATE OR REPLACE VIEW ' ||AUX_USERCONNECTED|| '.ALL_TAB_COLUMNS AS' ||
|
|||
|
|
' SELECT * FROM SYS.ALL_TAB_COLUMNS WHERE OWNER IN (SELECT USER FROM DUAL)');
|
|||
|
|
END IF;
|
|||
|
|
END;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: Configuração do banco de dados SQL Server
|
|||
|
|
```sql
|
|||
|
|
SELECT suser_sname(owner_sid) FROM sys.databases WHERE name = 'nome_do_banco';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: Configuração do banco de dados SQL Server
|
|||
|
|
```sql
|
|||
|
|
SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name= 'nome_do_banco';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: Transparent Data Encryption (TDE)
|
|||
|
|
```sql
|
|||
|
|
SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS
|
|||
|
|
FROM INFORMATION_SCHEMA.TABLES
|
|||
|
|
WHERE CREATE_OPTIONS = 'ENCRYPTION="Y"';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: Métodos de contorno de lentidão na plataforma
|
|||
|
|
```sql
|
|||
|
|
select COD_DATASET from serv_dataset where DSL_DATASET like '%FluigDS%';
|
|||
|
|
|
|||
|
|
select nr_documento, COD_EVENT from event_ficha where DSL_EVENT like '%FluigDS%';
|
|||
|
|
|
|||
|
|
select COD_EVENT from event_geral where DSL_EVENT like '%FluigDS%';
|
|||
|
|
|
|||
|
|
select event_proces.COD_DEF_PROCES, COD_EVENT from event_proces where DSL_EVENT like '%FluigDS%';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: 10 dicas para turbinar seu TOTVS Fluig, melhorando desempenho e estabilidade
|
|||
|
|
```sql
|
|||
|
|
/* Anexos de processos nunca acessados */
|
|||
|
|
|
|||
|
|
SELECT nr_versao, nr_documento, nm_arquivo_fisico, num_tam_arq_fisic FROM documento d WHERE nr_acessos = 0 AND tp_documento=7 OR (tp_documento=2 AND EXISTS(SELECT ap.NR_DOCUMENTO FROM anexo_proces ap WHERE ap.NR_DOCUMENTO = d.NR_DOCUMENTO) ) ORDER BY num_tam_arq_fisic DESC, nr_documento DESC
|
|||
|
|
|
|||
|
|
/* Documentos que não são anexos de processos, nunca acessados */
|
|||
|
|
|
|||
|
|
SELECT nr_versao, nr_documento, nm_arquivo_fisico, num_tam_arq_fisic FROM documento d WHERE nr_acessos = 0 AND tp_documento=2 AND not EXISTS(SELECT ap.NR_DOCUMENTO FROM anexo_proces ap WHERE ap.NR_DOCUMENTO = d.NR_DOCUMENTO ) ORDER BY num_tam_arq_fisic DESC, nr_documento DESC
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: 10 dicas para turbinar seu TOTVS Fluig, melhorando desempenho e estabilidade
|
|||
|
|
```sql
|
|||
|
|
/* documentos com a data de expiração menor do que a data atual */
|
|||
|
|
SELECT distinct(nr_documento) FROM documento WHERE dt_expiracao < CURDATE()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: 10 dicas para turbinar seu TOTVS Fluig, melhorando desempenho e estabilidade
|
|||
|
|
```sql
|
|||
|
|
/*
|
|||
|
|
log_type:
|
|||
|
|
0 - LOGIN,
|
|||
|
|
1 - LOGINERROR,
|
|||
|
|
2 - LOGOUT
|
|||
|
|
|
|||
|
|
access_date
|
|||
|
|
Data no formato 'YYYY-MM-DD HH:mm:ss'
|
|||
|
|
*/
|
|||
|
|
SELECT * FROM fdn_accesslog
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: 10 dicas para turbinar seu TOTVS Fluig melhorando desempenho e estabilidade
|
|||
|
|
```sql
|
|||
|
|
/* Anexos de processos nunca acessados */
|
|||
|
|
|
|||
|
|
SELECT nr_versao, nr_documento, nm_arquivo_fisico, num_tam_arq_fisic FROM documento d WHERE nr_acessos = 0 AND tp_documento=7 OR (tp_documento=2 AND EXISTS(SELECT ap.NR_DOCUMENTO FROM anexo_proces ap WHERE ap.NR_DOCUMENTO = d.NR_DOCUMENTO) ) ORDER BY num_tam_arq_fisic DESC, nr_documento DESC
|
|||
|
|
|
|||
|
|
/* Documentos que não são anexos de processos, nunca acessados */
|
|||
|
|
|
|||
|
|
SELECT nr_versao, nr_documento, nm_arquivo_fisico, num_tam_arq_fisic FROM documento d WHERE nr_acessos = 0 AND tp_documento=2 AND not EXISTS(SELECT ap.NR_DOCUMENTO FROM anexo_proces ap WHERE ap.NR_DOCUMENTO = d.NR_DOCUMENTO ) ORDER BY num_tam_arq_fisic DESC, nr_documento DESC
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: 10 dicas para turbinar seu TOTVS Fluig melhorando desempenho e estabilidade
|
|||
|
|
```sql
|
|||
|
|
/* documentos com a data de expiração menor do que a data atual */
|
|||
|
|
SELECT distinct(nr_documento) FROM documento WHERE dt_expiracao < CURDATE()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: 10 dicas para turbinar seu TOTVS Fluig melhorando desempenho e estabilidade
|
|||
|
|
```sql
|
|||
|
|
/*
|
|||
|
|
log_type:
|
|||
|
|
0 - LOGIN,
|
|||
|
|
1 - LOGINERROR,
|
|||
|
|
2 - LOGOUT
|
|||
|
|
|
|||
|
|
access_date
|
|||
|
|
Data no formato 'YYYY-MM-DD HH:mm:ss'
|
|||
|
|
*/
|
|||
|
|
SELECT * FROM fdn_accesslog
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: Desenvolvimento de relatórios
|
|||
|
|
```sql
|
|||
|
|
SELECT vol_fisic.CD_VOL_FISIC,
|
|||
|
|
vol_fisic.COD_EMPRESA,
|
|||
|
|
vol_fisic.NOM_DIR_FISIC,
|
|||
|
|
vol_fisic.ID_TIP_VOL_FISIC
|
|||
|
|
FROM vol_fisic
|
|||
|
|
WHERE vol_fisic.COD_EMPRESA = ${WKCompany}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: Desenvolvimento de relatórios
|
|||
|
|
```sql
|
|||
|
|
importPackage(Packages.com.datasul.technology.webdesk.dataset.service);
|
|||
|
|
importPackage(Packages.java.util);
|
|||
|
|
|
|||
|
|
|
|||
|
|
var qd = null;
|
|||
|
|
var rs = null;
|
|||
|
|
var rowMap = null;
|
|||
|
|
var sqlJpa = "";
|
|||
|
|
qd = new QueryDelegate();
|
|||
|
|
|
|||
|
|
sqlJpa = "SELECT count(d.documentPK.documentId), d.publisherId from Document d WHERE
|
|||
|
|
d.documentPK.companyId = ${WKCompany} GROUP BY d.publisherId";
|
|||
|
|
|
|||
|
|
rs = qd.getResultQuery(sqlJpa);
|
|||
|
|
|
|||
|
|
var rowMap = rs.get(0);
|
|||
|
|
|
|||
|
|
//Busca o valor do Count
|
|||
|
|
rowMap.get("d.publisherId");
|
|||
|
|
|
|||
|
|
//Busca o Código do documento
|
|||
|
|
rowMap.get("count(d.documentPK.documentId)");
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Origem: Como salvar Imagens e Vídeos locais em formulários usando o componente FLUIGC.richeditor
|
|||
|
|
```sql
|
|||
|
|
async function saveFilesECM(files, type) {
|
|||
|
|
let currentHTML = editor?.getData() || '';
|
|||
|
|
const parser = new DOMParser();
|
|||
|
|
const doc = parser.parseFromString(currentHTML, 'text/html');
|
|||
|
|
const parentId = '37'; // Código da pasta do ECM
|
|||
|
|
|
|||
|
|
for (const file of files) {
|
|||
|
|
try {
|
|||
|
|
const fileUrl = file.url;
|
|||
|
|
const fileName = file.alt;
|
|||
|
|
const data = await uploadFileECM(fileName, parentId);
|
|||
|
|
const newUrl = `/content-management/api/v2/documents/${data.documentId}/stream`;
|
|||
|
|
const filesInDoc = doc.querySelectorAll(type);
|
|||
|
|
|
|||
|
|
filesInDoc.forEach(target => {
|
|||
|
|
const idx = target.src.indexOf('/webdesk');
|
|||
|
|
const normalizedFileUrl = encodeURI(fileUrl);
|
|||
|
|
|
|||
|
|
if (idx >= 0 && target.src.substring(idx) === normalizedFileUrl) {
|
|||
|
|
target.src = newUrl;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('Erro ao processar arquivo:', error);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return doc.body.innerHTML;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|