RM Programação SQL Server
RM Programação SQL Server
RM Programação SQL Server
Programação SQL
no ambiente
CORPORE RM
DEPARTAMENTO DE TREINAMENTO
Fundada em 1986, a RM Sistemas, que faz parte da TOTVS S.A., grupo que
atua no desenvolvimento e comercialização de softwares de gestão
empresarial integrada e na prestação de serviços relacionados, se tornou, ao
longo de suas duas décadas de história, uma das principais empresas de
sistemas de ERP do mercado brasileiro. Com matriz em Belo Horizonte, filiais
em São Paulo (SP), Rio de Janeiro (RJ), Curitiba (PR), Uberlândia (MG), Porto
Alegre (RS) e Vitória (ES), a RM Sistemas está presente em todo o país por
meio de mais de 40 canais de distribuição. Além disso, mantém unidades em
Portugal.
SERVIÇOS ON LINE
Através do Site RM Sistemas você tem acesso a serviços exclusivos como:
informações financeiras e cadastrais, emissão de 2ª via de nota fiscal e
boleto bancário, consulta e ocorrências, envio de base, senhas e download
de novas versões, log de acessos e fórum de discussão. Tudo isso com total
segurança.
ÍNDICE
Visão Geral do CORPORE RM ERP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
MÓDULO VISÃO GERAL DA PROGRAMAÇÃO DO SQL SERVER . . . . . . . . . . . . .5
Identificando camadas lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
Ferramentas de programação do SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . .7
Linguagem de programação Transact-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
Nível de registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
MÓDULO BANCOS DE DADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Funcionamento do log de transações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Configurando opções de banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
Monitorando e expandindo um log de transações . . . . . . . . . . . . . . . . . . . . . .29
Reduzindo um banco de dados ou arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . .30
MÓDULO TIPOS DE DADOS E TABELAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Criando tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Criando e descartando tipos de dados definidos pelo usuário . . . . . . . . . . . . . .35
Criando tabelas - Informações Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
Criando e descartando uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
MÓDULO IMPLEMENTANDO A INTEGRIDADE DE DADOS . . . . . . . . . . . . . . . . .43
Tipos de Integridade de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Definindo restrições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
Criando restrições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Usando padrões e regras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
MÓDULO IMPLEMENTANDO VIEWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Introdução às views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Criando views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
Alterando e Descartando views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Modificando dados através de views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
Otimizando o desempenho com o uso de views . . . . . . . . . . . . . . . . . . . . . . . .60
MÓDULO PROCEDIMENTOS ARMAZENADOS . . . . . . . . . . . . . . . . . . . . . . . . . .63
Definido procedimentos armazenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Processamento inicial de procedimentos armazenados . . . . . . . . . . . . . . . . . . .64
Criando, executando e modificando procedimento armazenado . . . . . . . . . . . .67
Executando procedimentos armazenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
Alterando e descartando procedimentos armazenados . . . . . . . . . . . . . . . . . . .70
Recompilando explicitamente procedimentos armazenados . . . . . . . . . . . . . . .74
Tratando mensagens de erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
Considerações sobre o desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
MÓDULO FUNÇÕES DEFINIDAS PELO USUÁRIO . . . . . . . . . . . . . . . . . . . . . . . .79
Estabelecendo funções definidas pelo usuário . . . . . . . . . . . . . . . . . . . . . . . . .79
Criando uma função definida pelo usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Restrições às funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Criando uma função com vinculação de esquemas . . . . . . . . . . . . . . . . . . . . . .81
Definindo permissões para funções definidas pelo usuário . . . . . . . . . . . . . . . .81
Alterando e descartando funções definidas pelo usuário . . . . . . . . . . . . . . . . .81
Práticas recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
MÓDULO IMPLEMENTANDO DISPARADORES . . . . . . . . . . . . . . . . . . . . . . . . . .86
Introdução a disparadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
Uso de disparadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
Considerações sobre o uso dos disparadores . . . . . . . . . . . . . . . . . . . . . . . . . .88
Definindo disparadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
Alterando e descartando disparadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
Como funcionam os disparadores aninhados . . . . . . . . . . . . . . . . . . . . . . . . . .94
MÓDULO PROGRAMANDO EM VÁRIOS SERVIDORES . . . . . . . . . . . . . . . . . . . .99
Introdução às consultas distribuídas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Acessando dados remotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Configurando um ambiente de servidor vinculado . . . . . . . . . . . . . . . . . . . . .101
Estabelecendo segurança de servidor vinculado . . . . . . . . . . . . . . . . . . . . . . .102
ANEXO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108
Visão Geral do CORPORE RM ERP
Acessando dados
As tecnologias Microsoft permitem o acesso a dados da empresa através de um
grande número de clientes existentes ou personalizados que usam a interface de
programação de acesso a dados.
O Access e o Excel são exemplos de clientes existentes que oferecem uma ampla
funcionalidade. Você também pode usar os clientes existentes que oferecem
somente serviços da apresentação, como um navegador que se comunica com IIS.
CORPORE RM Departamento de Treinamento RM Sistemas
6 Programação SQL Server Reprodução Proibida
Criando clientes personalizados
Você pode criar clientes personalizados usando uma interface de programação de
acesso e um ambiente de desenvolvimento.
OLE DB
Um conjunto de interfaces do Component Services (Serviços de
componentes) que fornecem acesso uniforme aos dados armazenados em
diversas fontes de informações. O OLE DB (banco de dados OLE) permite
o acesso às fontes de dados relacionais e às fontes de dados que não são
relacionais.
Utilitário osql
Utilitário de linha de comando. O SQL Server oferece várias ferramentas de
programação, incluindo o SQL Query Analyzer (Analizador de consultas do SQL) e
o utilitário osql. O SQL Query Analyzer é um aplicativo baseado no Windows, e o
osql é um utilitário que pode ser executado a partir de um prompt de comando.
Departamento de Treinamento RM Sistemas CORPORE RM
Reprodução Proibida Programação SQL Server 7
O utilitário osql permite que você escreva instruções Transact-SQL,
procedimentos do sistema de arquivos de script. Ele utiliza a conectividade aberta
de banco de dados (ODBC, open Database Connectivity) para se comunicar com
o servidor, o utilitário é iniciado diretamente do sistema operacional, através dos
argumentos com diferenciação de maiúsculas/minúsculas listados a seguir.
Uma vez iniciado, o osql aceita as instruções Transact-AQL e as envia para o SQL
Server de forma interativa. O osql formata e exibe os resultados da tela. Use os
comandos Quit ou Exit para sair do osql.
Observação:
Nas instruções do osql, os parâmetros fazem diferenciação de
maiúsculas/minúsculas.
Importante:
Procure escrever scripts que incluam somente instruções de padrão
ANSI-SQL para aumentar a compatibilidade e a portabilidade do banco
de dados.
Elementos do Transact-SQL
Ao escrever e executar instruções Transact-SQL, você usará diferentes instruções
de linguagem usadas para determinar quem poderá ver ou modificar os dados,
criar objetos no banco de dados, consultar e modificar os dados. Siga as regras de
nomeação de objetos do SQL Server e familiarize-se com as orientações de
nomeação de objetos do banco de dados.
Exemplo:
A seguir permissão ao cargo public para consultar a tabela Products
(produtos):
USE corpore
GRANT SELECT ON pfunc to public
Exemplo:
O script a seguir cria uma tabela chamada “tbsalario” no banco de
dados corpore. Ela inclui as colunas chapa, nome e salario.
USE corpore
CREATE TABLE tbsalario
(chapa VARCHAR(20),nome VARCHAR (100),salario MONEY)
SELECT;
INSERT;
UPDATE;
DELETE.
SELECT;
INSERT;
UPDATE;
DELETE.
Exemplo:
Recupera a chapa, nome e salário dos funcionários contidos no
banco de dados corpore.
Observação:
Os nomes de objetos temporários não devem ter mais de 116
caracteres, incluindo os sinais (#) ou (##), porque o SQL Server atribui
um sufixo numérico interno aos objetos temporários.
Identificadores delimitados
Se um identificador atender a todas as regras de formato de identificadores,
poderá ser utilizado com ou sem delimitadores. Se um identificador não atender a
uma ou mais regras de formato de identificadores, deverá ser sempre delimitado.
Os identificadores delimitados podem ser usados nas seguintes situações:
Observação:
É possível utilizar sempre os delimitadores agupados,
independentemente do status da opção SET QUOTED_IDENTIFIER.
Atenção:
Só é possível usar identificadores entre aspas com a opção SET
QUOTED_IDENTIHER ativada.
Orientações de nomeação
Exemplo:
Evite criar uma tabela Saies (Vendas) e um cargo saies dentro do
mesmo banco de dados.
Exemplo:
Embora o nome de coluna Chr_Name_Of_Customer seja significativo, é
possível abrevia-lo para Name (Nome) ou Chr (Caractere_Nome).
Variáveis locais
Variáveis são elementos da linguagem com valores atribuídos. Você pode usar
variáveis locais no Transact-SQL. Defina uma variável local em uma instrução
DECLARE e atribua um valor inicial a ela usando a instrução SET ou SELECT. Use
a instrução SET quando o valor desejado for conhecido. Use a instrução SELECT
quando tiver de pesquisar o valor desejado em uma tabela.
USE corpore
DECLARE @v_name varchar (20)
DECLARE @v_chapa varchar (20)
Sintaxe parcial:
Tipos de operadores
O SQL Server oferece suporte para quatro tipos de operadores: aritméticos, de
comparação, de concatenação de seqüências de caracteres e lógicos.
Aritmético
Os operadores aritméticos efetuam cálculos com colunas ou constantes
numéricas, o Transact-SQL oferece suporte para operadores multiplicativos,
incluindo multiplicação (*), divisão (1) e módulo (%) – o resto inteiro de uma divisão
de inteiros – e operadores aditivos, de adição (+) e subtração (-).
Comparação
Os operadores de comparação comparam duas expressões. É possível efetuar
comparações entre variáveis, colunas e expressões semelhantes. A tabela a seguir
define os operadores de comparação no Transact-SQL.
Lógico
Os operadores lógicos AND, OR e NOT conectam condições de pesquisa em
cláusulas WHERE.
Funções
Funções agregadas
Operam sobre um conjunto de valores,mas retornam um único valor de resumo.
Exemplos:
1) Calcula a média da coluna UnitPrice para todos os produtos da tabela
Products (Produtos).
SELECT AVG (salario) FROM pfunc
Funções escalares
Operam sobre um valor individual e retornam um único valor. É possível utilizar
essas funções sempre que uma expressão for válida. Você pode agrupar as
funções escalares nas categorias da tabela a seguir.
Exemplo:
1) O exemplo a seguir executa uma consulta distribuída para recuperar
informações da tabela EMP (Funcionário)
SELECT *
FROM OPENQUERY
(OracleSvr, ‘SELECT ENAME, EMPNO
FROM SCOTT.EMP’)
Blocos BEGIN...END;
Blocos IF...ELSE;
Construções com WHILE.
Exemplo:
Neste exemplo nos verificamos se o cliente possui algum lançamento
para que o nome possa ser alterado.
USE corpore
Nível de registro
Expressão CASE
O Transact-SQL contém vários elementos de linguagem que controlam o
fluxo da lógica em uma instrução. Ele também contém a expressão CASE
que permite usar uma lógica condicional em uma registro de cada vez, em
uma instrução SELECT ou UPDATE.
Uma expressão com CASE lista atributos atribui um valor a cada atributo e testa
cada um deles. Se a expressão retorna um valor verdadeiro, a expressão com
CASE retomará o valor na cláusula WHEN. Se a expressão for falsa e você tiver
especificado uma cláusula ELSE, o SQL Server retomará o valor na cláusula ELSE.
Exemplo:
Qualificamos a classificação da quantidade conforme a informado no
item da nota fiscal.
Comentários
Comentários são seqüências de texto não executáveis inseridas em instruções
para descrever a ação executada pela instrução ou para desativar uma ou mais
linhas da instrução. Eles podem ser usados de duas maneiras, em linha com uma
instrução ou como um bloco.
Comentários em linha
É possível criar comentários usando dois hífens (- -) para isolá-los da instrução. O
Transact-SQL ignora o texto posicionando à direita dos caracteres de comentário.
Esses caracteres de comentário também podem ser usados para desativar linhas
de uma instrução.
Exemplo:
SELECT
idprd,MAX(quantidade) AS Maior_quantidade --Maior quantidade
FROM
corpore.dbo.titmmov
GROUP BY idprd
Comentários em bloco
É possível criar blocos de comentários de várias linhas, inserindo um caractere de
comentário (1*) no início do texto do comentário, digitando o comentário e
concluindo-o com um caractere de encerramento de comentário (1*).
Use esse caractere indicativo para criar uma ou mais linhas de comentários ou
cabeçalhos de comentários(texto descritivo que documenta as instruções
subseqüentes). Geralmente, os cabeçalhos incluem o nome do autor, as datas de
criação e da última modificação do script, informações sobre a versão e uma
descrição da ação executada pela instrução.
Observação:
Você pode inserir a instrução GO nos comentários em bloco.
Observação:
Insira comentários em um script inteiro para descrever as ações
executadas pelas instruções. Esse recurso é importante principalmente
se outros usuários também precisarem examinar ou implementar o
script.
Para criar uma instrução de forma dinâmica, use a instrução EXECUTE com uma
série de literais e variáveis de seqüências que são resolvidas em tempo de
execução. As instruções construídas dinamicamente são úteis quando você deseja
que SQL Server atribua o valor da variável durante a execução da instrução.
Por exemplo, você pode criar uma instrução dinâmica que executa a mesma ação
em uma série de objetos de banco de dados.
Sintaxe:
EXECUTE ( { @variável_de_sequência |
‘sequência_do_tsql’} + [ { @variável_de_sequência |
‘sequência_do_tsql’}...)}
Exemplo:
Consultaremos a coluna nome na tabela “tprd” no banco “corpore”,
lembrando que o nome do banco e tabela foram informados na
instrução.
Usando lotes
Observação:
Se ocorrer um erro de sintaxe em um lote, nenhuma das instruções
contidas nesse lote será executada. A execução iniciará no lote seguinte.
CREATE PROCEDURE;
CREATE VIEW;
CREATE TRIGGER;
CREATE RULE;
CREATE DEFAULT.
Usando scripts
Usando transações
Sintaxe parcial:
BEGIN TRANSACTION
COMMIT / ROLLBACK TRANSACTION
Exemplo:
Estamos alterando o salário de um funcionário e caso ocorra algum
erro na execução será executado o ROLLBACK da transação.
BEGIN TRANSACTION
UPDATE pfunc SET salario=(salario*0.10)+salario
WHERE chapa='00001'
IF @@ERROR <> 0
BEGIN
RAISERROR (' Transação não pode executar com sucesso',16,1)
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION
Observação:
O SQL Server reordena o conjunto de resultados a fim de agrupar as
colunas por nome de tabela.
Exemplo:
SELECT nome,salário;
FROM pfunc;
WHERE salario>100;
ORDER BY salario DESC;
FOR XML RAW.
Exercícios
Objetivos
Escrever instruções SELECT básicas;
Executar um script com utilitário osql;
Usar funções do sistema.
Esta instrução tratara todas as colunas que pertencem a uma chave (Primary key
ou foreign Key) da tabela PFUNC.
USE corpore
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE
TABLE_NAME='PFUNC'
Importante:
Você deve fazer um backup do banco de dados master toda vez que
criar, alterar ou descartar um banco de dados.
PRIMARY
Este parâmetro especifica os arquivos do grupo primário. Esse grupo
contém todas as tabelas do sistema do banco de dados. Também contém
todos os objetos não atribuídos a grupos de arquivos do usuário. Todo
banco de dados tem único arquivo de dados primário. O arquivo de dados
primário é o ponto de partida do banco de dados e indica o restante dos
arquivos do banco de dados. A extensão de arquivo recomendado para
arquivos de dados primários é “.mdf.” Se a palavra chave PRIMARY não
for especificada, primeiro arquivo listado na instrução se tornará o arquivo
primário.
FILENAME
Este parâmetro específica o nome do arquivo no sistema operacional e o
caminho para o arquivo. O caminho contido em “nome_do_arquivo” só
deve especificar uma pasta no servidor na qual o SQL Server está
instalado.
Departamento de Treinamento RM Sistemas CORPORE RM
Reprodução Proibida Programação SQL Server 21
SIZE
Este parâmetro especifica o tamanho do arquivo de dados ou log. Você
pode especificar tamanhos em megabytes (MB) (o valor padrão) ou em
quilobytes (KB). O tamanho mínimo é de 512 KB tanto para o arquivo de
dados quanto para o arquivo de log. O tamanho especificado para o
arquivo de dados primário deve ter, pelo menos, o mesmo tamanho do
arquivo primário do banco de dados model. Quando você adicionar um
arquivo de dados ou de log, o valor padrão é de 1 MB.
MAXSIZE
Este parâmetro especifica o tamanho máximo que o arquivo pode atingir.
Você pode especificar tamanhos em megabytes (valor padrão) ou em
quilobytes. Caso nenhum tamanho seja especificado, o arquivo crescerá
até que o disco esteja cheio.
FILEGROWTH
Este parâmetro especifica o incremento de crescimento do arquivo. A
configuração de HLEGROWTH para um arquivo não pode exceder a
configuração de MAXSIZE. Um valor 0 indica nenhum crescimento. O valor
pode ser especificado em megabytes (padrão), em quilobytes ou como
uma porcentagem (%). O valor padrão, caso HLEGROWTH não seja
especificado, é de 10%, e o valor mínimo é de 64 KB (uma extensão). O
tamanho especificado é arredondado até o múltiplo de 64 KB mais
próximo.
COLLATE
Este parâmetro especifica a intercalação padrão para o banco de dados. A
intercalação inclui as regras que governam o uso de caracteres para uma
linguagem ou um alfabeto.
Exemplo:
criando database chamado corpore
LOG ON
(NAME='corpore_log',
FILENAME='c:\curso\database\corpore_log.ldf',
SIZE= 5MB,
MAXSIZE=200MB,
FILEGROWTH=1MB)
Opções automáticas;
Opções do cursor;
Opções de recuperação;
Opções do SQL;
Opções de estado.
Collate
IsAnsiNullDefault
IsAnsiNullsEnabled
IsAnsiPaddingEnabled
IsAnsiWamingsEnabled
IsArithmcticAbortEnabled
IsAutoCreateStatjstics
LsAutoShrink
IsAutoUpdateStatitics
IsCloseCursorsOnCommitEnabled
IsFulltextEnabled
IsInStandBy
IsNullConcat
IsQuotedIdentifiersEnabled
IsRecursiveTriggersEnabled
Recovery
Status
Updateability
UserAccess
Version
Muitas vezes, o uso do recurso de faixas de disco oferecido pelos sistemas RAID
(Redundant Array of Independent Disks, matriz redundante de discos
independentes) fornece o mesmo ganho de desempenho que você obteria usando
grupos de arquivos sem a carga administrativa adicional de definir e gerenciar
grupos de arquivos.
Observação:
Arquivos de log não são parte de um grupo de arquivos. O espaço de
log é gerenciado separadamente do espaço de dados.
Exemplo:
Adicionado um grupo de arquivo e adicionado um arquivo de dados
secundário na database corpore.
USER MASTER
À medida que o banco de dados for aumentado ou alterado, você pode expandir
ou reduzir o banco de dados manual ou automaticamente. Quando não precisar
mais de um banco de dados, poderá descartá-lo com todos os arquivos
associados.
Monitorando o log
Planeje cuidadosamente de forma que você não fique com espaço insuficiente no
log. Monitorar o log de forma regular ajuda você a determinar o momento ideal
para expandi-lo.
Importante:
Caso seu log de transações fique sem espaço, SQL Server não será
capaz de registrar as transações e não permitirá alterações em seu
banco de dados.
O SQL Server reduz arquivos de log usando uma operação de redução com
adiamento e faz isso como se todos os arquivos do log existissem em um conjunto
de logs contíguo. Os arquivos de log são reinicializados quando o log é truncado,
o SQL Server tenta reduzir os arquivos de log truncados para o tamanho mais
próximo possível do tamanho desejado.
Exemplo:
Este exemplo reduz o tamanho de Sample para que o banco de dados
tenha 25% de espaço livre.
Atenção:
O SQL Server não reduz um arquivo a um tamanho menor que a
quantidade de espaço ocupada pelos dados. Além disso, ele não reduz
um arquivo além do tamanho especificado pelo parâmetro Size da
instrução CREATE DATABASE.
DBCC SHIRINKFILE({nome_arquivo|identificação_do_arquivo}[,tamanho_desejado]
[, { EMPTYFILE | NORTRUCATE | TRUNCATEONLY}] )
Exemplo:
Este exemplo reduz o tamanho do arquivo de dados SampleData a 10
MB.
O banco de dados resultante deve ser maior que o banco de dados model
ou que os dados existentes no banco de dados ou arquivo de dados;
Observação:
Você pode descartar um banco de dados quando não precisar mais
dele. Descartar um banco de dados exclui o banco de dados e os
arquivos de disco usados por ele.
Exemplo:
DROP DATABASE Northwind
Objetivo
Data e hora;
Caractere e caractere Unicode;
Binário;
Outros.
Os tipos de dados definem o valor do campo permitido para cada coluna. O SQL
Server fornece vários tipos de dados diferentes. Alguns tipos de dados comuns
possuem vários tipos de dados associados do SQL Server. Escolha os tipos de
dados apropriados para otimizar o desempenho e poupar espaço em disco.
Em geral, você usaria tipo de dado numérico exatos em aplicações financeiras nas
quais os dados devem ser representados de forma consistente e para realizar
consultas nessa coluna.
O SQL Server oferece suporte a dois tipos de dados aproximados: float e real. Se
estiver arredondando números ou efetuando verificações de qualidade entre os
valores, evite usar tipos de dados numéricos aproximados.
Descartando
EXEC SP_DROPTYPE EMAIL
S P _ A D D T Y P E { t i p o } , [ t i p o _ d e _ d a d o s _ d o _ s i s t e m a ] [ , [ ‘ N U L L’ | ’ N O T
NULL’]][,’nome_do_proprietario’]
SP_DROPTYPE [‘tipo’]
Não use os tipos de dados aproximados float e real como chaves primárias.
Como os valores desses tipos de dados não são precisos, não convém usá-
los em comparações.
Cabeçalho de registro
O cabeçalho de registro de 4 bytes contém informações sobre as colunas no
registro de dados, como um ponteiro que indica o local do final da parte de dados
fixos do registro e a existência ou não de colunas de tamanho variável no registro.
Parte de dados
A parte de dados de um registro pode conter os seguintes elementos:
Bloco variável
Um bloco variável consiste em dois bytes que descrevem o número de
colunas de tamanho variável presentes. Uma quantidade adicional de dois
bytes por coluna aponta para o final de cada coluna de tamanho variável.
O bloco variável será omitido se não houver nenhuma coluna de tamanho
variável.
Dica:
Sempre que possível, mantenha compacto o comprimento do registro
para permitir o ajuste de mais registro em uma página. Isso reduzirá
I/O e aumentará a taxa de acertos no cache do buffer.
Como os tipos de dados text, ntext e image normalmente são extensos, o SQL
Server armazena-os fora dos registros. Um ponteiro de 16 bytes no registro de
dados para uma estrutura raiz que contém os dados. A estrutura raiz de texto
forma o nó da árvore B, que aponta para o blocos de dados. Caso haja mais de 32
quilobytes (KB) de dados, os nós intermediários da árvore B serão adicionados
entre o nó raiz e os blocos de dados.
Você também pode definir o limite da opção, com intervalo variando entre 24 a
7.000 bytes. Para ativar a opção “text in row” para uma tabela, use o
procedimento armazenado do sistema “sp_tableoption”. Este exemplo define a
opção “text in row” para “ON”, através do procedimento armazenado do sistema
“sp_tableoption”, e especifica que no máximo 1000 caracteres de text, ntext e
image serão armazenados na página de dados.
Ao criar uma tabela, você deve especificar o nome da tabela, os nomes das
colunas e os tipos de dados das colunas. Os nomes das colunas devem ser
exclusivos para uma tabela, mas o mesmo nome de coluna pode ser usado em
diferentes tabelas dentro do mesmo banco de dados. Você deve especificar um
tipo de dados para cada coluna.
Intercalação de coluna
O SQL Server oferece suporte ao armazenamento de objetos com diferentes
intercalações no mesmo banco de dados. As intercalações separadas do SQL
Server podem ser especificadas no nível de coluna, de modo que cada coluna de
uma tabela obtenha uma intercalação diferente.
Nome_da_coluna_tipo_de_dados [COLLATE<nome_da_intercalação>]
Nome_da_coluna AS expressão_de_coluna_calculada
[,...n]
Exemplo:
Cria a tabela dbo.Vendedor, especificando as colunas da tabela, um
tipo de dados para cada coluna e se a coluna permite valores nulos.
Colunas calculadas
A coluna calculada é uma coluna virtual que não está fisicamente armazenada na
tabela. O SQL Server usa uma fórmula criada pelo usuário para calcular o valor
dessa coluna usando outras colunas da mesma tabela. A utilização de um nome
de coluna calculada em uma consulta pode simplificar a sintaxe da consulta.
Adicionar e descartar colunas são duas maneiras usadas para modificar tabelas.
Exemplo:
Adiciona uma coluna que permite valores nulos.
Exemplo:
Descarta uma coluna de uma tabela.
Observação:
Todos os índices e restrições que se baseiam em uma coluna devem
ser removidos antes de descartar a coluna.
Você pode usar a propriedade Identity para criar colunas (referidas como colunas
de identidade) que contêm valores seqüências gerados pelo sistema que
identificam cada registro inserido em uma coluna em uma tabela. Um coluna de
identidade é usada com freqüência em valores de chave primaria.
Fazer com que o SQL Server forneça automaticamente valores de chaves pode
reduzir custos e melhorar o desempenho. Esse recurso simplifica a programação,
mantém os valores da chave primaria curtos e reduz gargalos em transações do
usuário.
Exemplo:
Cria uma tabela com três colunas, CODIGO (identificação do cliente)
NOME (Nome do cliente) e EMAIL (E-mail do cliente). A propriedade
Identity é usada para incrementar o valor automaticamente em cada
registro adicionado à coluna CODIGO. O valor inicial é definido como
10, e o valor incremento é 10. Os valores na coluna seriam 10,20,30 e
assim por diante. O uso de 10 como um valor incremento permite que
você insira posteriormente entre os valores.
Exemplo:
A coluna de identificação do cliente da tabela Cliente foi criada com um
tipo de dados uniqueidentifier, com um valor padrão, gerado pela
função NEWID. Um valor exclusivo para a coluna CODIGO
(Identificação do cliente) será gerado para cada registro novo existente.
Exercícios
Objetivos
Tabela: TBL_CLIENTE
Tabela: TBL_EMPRESA
Integridade de domínio
A integridade de domínio (ou de coluna) especifica um conjunto de valores de
dados que são válidos para uma coluna e determina se serão permitidos valores
nulos. Esse tipo de integridade é geralmente imposto através do uso de uma
verificação de validade e também pode ser imposto restringindo-se o tipo, o
formato ou a faixa de valores possíveis de dados que será permitida em uma
coluna.
Integridade de entidade
A integridade de entidade (ou de tabela) requer que todos os registros de uma
tabela tenham um identificador único, conhecido como o valor da chave primaria.
A possibilidade de alterar o valor da chave primaria ou de excluir o registro inteiro
dependerá do nível de integridade requerido entre a chave primaria e todas as
outras tabelas.
Integridade Referencial
A integridade referencial garante que o relacionamento entre as chaves primárias
(na tabela referenciada) e as chaves externas (nas tabelas de referência) sejam
sempre mantidos. Não será possível excluir um registro de uma tabela
referenciada nem alterar a chave primária de um registro se uma chave externa
fizer referência ao registro, a menos que uma ação em cascata seja permitida.
Você pode definir relacionamentos de integridade referencial na mesma tabela ou
entre tabelas distintas.
Na integridade procedural, você escreve scripts que definem os critérios aos quais
os dados devem atender e impor os critérios. Limite o uso da integridade
procedural às exceções e à lógica comercial mais complexa.
Exemplo:
Use esse tipo de integridade quando desejar uma exclusão em cascata.
Definindo restrições
Criando restrições
Você pode adicionar restrições a uma tabela que já contenha dados e colocá-las
em uma única ou em várias colunas:
({<definição_de_coluna>
| <restrição_de_tabela>} [,...n])
<restrição_de_coluna> ::=
[CONSTRAINT nome_da_restricao]
\ [ { PRIMARY KEY | UNIQUE}
[CLUSTERED | NONCLUSTERED]]
| [ [FOREIGN KEY]
REFERENCES tabela_referenciada [(coluna_referenciada)]
[ON DELETE { CASCADE | NO ACTION}]
[ON UPDATE { CASCADE | NO ACTION}]]
CHECK ( expressao_logica)
Exemplo:
Cria a tabela “Produtos”, define colunas e define restrições em nível de
coluna e de tabela.
Você deve criar uma lógica de verificação de erros em seu aplicativo e nas
transações para verificar se uma restrição foi violada;
Você deve especificar nomes para as restrições ao criá-las, pois o SQL Server
fornece nomes complexos, gerado pelo sistema. Os nomes devem ser exclusivos
para o proprietário do objeto do banco de dados e seguir a regras definidas para
os identificadores do SQL Server. Para obter ajuda sobres restrições, execute o
procedimento armazenado do sistema “sp_helpconstraint” ou “sp_help”, ou
consulte as views do esquema de informações, como check_constraints,
referential_constraints e table_constraints.
Tipos de restrições
Restrições DEFAULT
[CONSTRAINT nome_da_restricao]
DEFAULT expressão-constante
Exemplo:
Adicionar uma restrição DEFAULT que insere o valor NÃO
INFORMADO na tabela cliente se um contato não for fornecidor.
USE corpore
GO
ALTER TABELA dbo.cliente
ADD
CONSTRAINT DF_cliente_contato DEFAULT 'NÃO INFORMADO' FOR
CONTATO
GO
Observação:
Ela permite que alguns valores fornecidos pelo sistema USER,
CURRENT_USER, SESSION_USER, SYSTEM_USER ou
CURRENT_TIMESTAMP sejam especificados em vez de valores
definidos pelo usuário. Esses valores fornecidos pelo sistema podem
ser úteis para oferecer um registro dos usuários que inseriram dados.
Restrições CHECK
[CONSTRAINT nome_da_restricao]
CHECK ( expressão_lógica)
Exemplo:
Adiciona uma restrição CHECK para garantir que uma data de
nascimento esteja em conformidade com um intervalo aceitável de
datas.
USE corpore
GO
ALTER TABLE dbo.vendedor ADD
CONSTRAINT CK_NASCIMENTO
CHECK (dtnascimento >'01-01-1900' AND dtnascimento<GETDATE())
GO
Observação:
Se algum dado violar a restrição CHECK, você poderá executar a
instrução DBCC CHECKCONSTRAINTS para retornar os registros
responsáveis pela violação.
[CONSTRAINT nome_da_restricao]
PRIMARY KEY [CLUSTERED | NONCLUSTERED]
{ ( coluna [,…n) }
Exemplo:
Adiciona uma restrição que específica que o valor da chave primária da
tabela Fornecedor é a identificação do cliente e indica que será criado
um índice sem agrupamento para impor a restrição.
USE corpore
GO
ALTER TABLE dbo.Fornecedor
ADD
CONSTRAINT PK_Fornecedor
PRIMARY KEY NONCLUSTERED (codigo)
GO
Observação:
Ela cria um índice exclusivo nas colunas especificadas. Você pode
especificar um índice de agrupamento ou um outro qualquer (o índice
de agrupamento será o padrão se ele ainda não existir).
O índice criado para uma restrição PRIMARY KEY não pode ser
descartado diretamente. Ele será descartado quando você descartar a
restrição.
Restrições UNIQUE
A restrição UNIQUE é útil quando você já tem uma chave primária, como
o número de funcionário, mas deseja garantir que outros identificadores,
como o numero da carteira de motorista.
[CONSTRAINT nome_da_restricao]
UNIQUE [CLUSTERED | NONCLUSTERED]
{ ( coluna [,…n) }
Exemplo:
Cria uma restrição UNIQUE no nome da empresa na tabela Fornecedor
USE corpore
GO
ALTER TABLE dbo.Fornecedor
ADD
CONSTRAINT U_nome
UNIQUE NONCLUSTERED (NOME)
GO
Observação:
E possível aplicar a restrição UNIQUE a uma ou mais colunas que
devam ter valores exclusivos, mas que não sejam a chave primária de
uma tabela.
[CONSTRAINT nome_da_restricao]
FOREIGN KEY [ ( coluna[,…n)]
REFERENCES tabela_referenciada [ (
coluna_referenciada [,…n])]
Exemplo:
Usa uma restrição FOREIGN KEY para garantir a identificação do cliente
na tabela PEDIDO associada a uma identificação válida na tabela
“Cliente”.
USE CURSO
GO
ALTER TABLE dbo.Pedido
ADD CONSTRAINT FK_pedido_cliente
FOREIGN KEY (Id_cliente)
REFERENCES dbo.Cliente (Id_cliente)
GO
Observação:
Você só poderá usar a cláusula REFERENCES sem a cláusula FOREIGN
KEY ao fazer referência a uma coluna da mesma tabela.
A restrição FOREIGN KEY inclui uma opção CASCADE que permite que qualquer
alteração em um valor de coluna que defina uma restrição UNIQUE ou PRIMARY
KEY seja propagada automaticamente para o valor da chave externa.
Desativando restrições
Por motivos de desempenho, às vezes recomenda-se a desativação de restrições.
É mais eficiente, por exemplo permitir o processamento de operações em lote
grandes antes de ativar restrições. Esta seção descreve como desativar a
verificação de restrições, independentemente de você estar criando uma nova
restrição ou desativando uma existente.
Quando você define uma restrição em uma tabela que já contenha dados, o SQL
Server verifica os dados automaticamente para assegurar que eles atendam aos
requisitos da restrição. No entanto, você pode desativar a verificação de restrições
nos dados existentes ao adicionar uma restrição à tabela.
USE corpore
GO
ALTER TABLE dbo.produto
Para ativar uma restrição que tenha sido desativada, será necessário executar
outra instrução ALTER TABLE que contenha uma cláusula CHECK ou CHECK ALL.
USE CURSO
GO
ALTER TABLE dbo.produto
NOCHECK
CONSTRAINT FK_produto_fornecedor
Go
Para saber se uma restrição está ativada ou desativada em uma tabela, execute o
procedimento armazenado do sistema SP_HELP ou use a propriedade
CnstlsDisabled na função OBJECTPROPERTY.
Padrões e regras são objetos que podem estar ligados a uma ou mais colunas ou
a tipos de dados definidos pelo usuário, tomando possível defini-los uma vez e
usá-los inúmeras vezes. Uma desvantagem do uso de padrões e regras é que eles
não estão em conformidade com o padrão ANSI.
Criando um padrão
Se você não especificar um valor ao inserir os dados, um padrão especificará um
valor à qual o objeto está ligado. Considere estes fatos antes de criar padrões:
Você não poderá criar uma restrição DEFAULT em uma coluna que esteja
definida com um tipo de dados definido pelo usuário se já existir um
padrão ligado ao tipo de dados ou a coluna.
USE CORPORE
GO
CREATE DEFAULT TELEFONEDEF AS '55-(31)2222-9090'
GO
EXEC SP_BINDEFAULT TELEFONEDEF, 'ppessoa.telefone'
Práticas recomendadas
As práticas recomendadas a seguir devem ajudá-lo a implementar a integridade
de dados:
Objetivos
Tabela: TBL_FUNC
Definido views
Esta seção descreve como criar, alterar e descartar views. Ela também aborda
como evitar cadeias de propriedades interrompidas, ocultar definições de views e
obter informações sobre views em seu banco de dados.
Criando views
Criando uma view;
Restrições às definições de views:
Não pode incluir a instrução ORDER BY
Não pode incluir a palavra-chave INTO
Você pode criar views usando o Create View Wizard (Assistente para criação de
views), o SQL Server Enterprise Manage (Gerenciador corporativo do SQL Server)
ou transact-SQL. As views só podem ser criadas no banco de dadosatual.
Quando você cria uma view, o Microsoft® SQL Server verifica a existência de
objetos aos quais a definição da view faz referência. O nome da view deve seguir
as regras dos identificadores. A especificação do nome do proprietário da view é
opcional. Você deve desenvolver uma conservação de nomeação consistente para
fazer a distinção entre views e tabelas.
Exemplo:
Você poderia adicionar a palavra view como sufixo para cada objeto
dde view criado. Isso permite que você diferencie facilmente objetos
semelhantes (tabelas e view) ao consultar a view
INFORMATION_SCEMA.TABLES.
Sintaxe:
Para executar a instrução CREATE VIEW, voce deverá ser participante do cargo de
administradores do sistema (sysadmin), do cargo de proprietário do banco de
dados (db_owner) ou do cargo de administrador de linguagem de definição de
dados (db_ddladmin) ou deverá ter permissão CREATE VLEW. Você também
deverá ter a permissão SELECT em todas as tabelas ou views às quais a view faz
referência.
Importante:
Quando você cria uma view, é importante testar a instrução SELECT
que define a view para garantir que o SQL Server retome o conjunto de
resultados esperado. Depois de escrever e testar a instrução SELECT e
verificar os resultados, crie a view.
USE corpore
GO
CREATE VIEW dbo.fcfo_flan
AS
SELECT fcfo.nome,SUM(valororiginal)
FROM
fcfo
JOIN
flan
ON
flan.codcolcfo=fcfo.codcoligada and
flan.codcfo=fcfo.codcfo
GROUP BY fcfo.nome
ORDER BY fcfo.nome
Alterando views
A instrução ALTER VIEW altera a definição de view, incluindo views indexadas,
sem afetar os disparadores ou procedimentos armazenados dependentes. Isso
permite manter as permissões da view. Essa instrução está sujeita às mesmas
restrições que a instrução CREATE VIEW. Se descartar uma view e criá-la
novamente, você deverá reatribuir permissões a ela.
Sintaxe:
Exemplo:
ALTER VIEW dbo.fcfo_flan
AS
SELECT fcfo.nome,AVG(valororiginal)
FROM
fcfo
JOIN
flan
ON
flan.codcolcfo=fcfo.codcoligada and
flan.codcfo=fcfo.codcfo
GROUP BY fcfo.nome
ORDER BY fcfo.nome
Observação:
Se você definir uma view com uma instrução SELECT * e, depois,
alterar a estrutura das tabelas adjacentes adicionando colunas, as
novas colunas não aparecerão na view. Quando todas as colunas são
selecionadas em uma instrução CREATE VIEW, a lista de colunas é
interpretada apenas quando você cria uma view pela primeira vez.
Para ver as novas colunas na view, você deve altera-la.
Descartando views
Se não precisar mais de uma view, você poderá remover sua definição do banco
de dados executando a instrução DROP VIEW. Ao descartar uma view, você
remove sua definição e todas as permissões atribuídas a ela.
Além disso, se os usuários consultarem qualquer view que faça referência à view
descartada, eles receberão uma mensagem de erro. No entanto, descartar uma
tabela que faça referência a uma view não descartada automaticamente, deverá
ser descartada explicitamente.
Observação:
A permissão para descartar uma view atribuída ao proprietário da view
e é intransferível. Esse é o padrão. No entanto, o administrador do
sistema ou o proprietário do banco de dados pode descartar qualquer
objeto especificando o nome do propritário na instrução DROP VIEW.
Talvez você deseje ver a definição de uma view para altera-la ou entender como
seus dados são derivados das tabelas base.
Para exibir o texto usado para criar uma view, use o SQL Server Enterprise
Manager, consulte INFORATION_SCHEMA.VIEWS ou execute o procedimento
armazenado do sistema sp_helptext com o nome de view como parâmetro.
Sintaxe:
sp_helptext nome_do_objeto
Sintaxe:
sp_depends nome_do_objeto
Exemplo:
CREATE VIEW dbo.fcfo_flan_max
WITH ENCRYPTION
AS
SELECT fcfo.nome,MAX(valororiginal)
FROM
fcfo
JOIN
flan
ON
flan.codcolcfo=fcfo.codcoligada and
flan.codcfo=fcfo.codcfo
GROUP BY fcfo.nome
ORDER BY fcfo.nome
Departamento de Treinamento RM Sistemas CORPORE RM
Reprodução Proibida Programação SQL Server 59
Não excluir entradas da tabela syscomments
Quando as considerações sobre segurança exigem que a definição de view não
fique disponível para os usuários, use a criptografia. Nunca exclua entradas da
tabela syscomments.
Isso impedirá que você use a view também impedirá que o SQL Server a crie
novamente quando você atualizar um banco de dados para uma versão mais
recente do SQL Server.
Com algumas restrições, você poderá inserir, atualizar ou excluir livremente dados
de tabelas através de uma view. Em geral, a view deve ser definida em uma única
tabela e não deve incluir funções agregadas ou cláusulas GROUP BY na instrução
SELECT. Especificamente, as modificações feitas com o uso de views:
Usando o “Index Tuning Wizard” (Assistente para ajuste de índice), você pode
melhorar significativamente sua capacidade de determinar a melhor combinação
de índices e views indexadas para otimizar o desempenho de consultas.
Observação:
Você deve usar a propriedade IsIndexable da função
OBJECTPROPERTY para certificar-se de que possa indexar uma view.
Observação:
Não é possível criar um índice em uma view particionada. A definição
de view necessária para criar a view indexada permite somente nomes
de duas partes; as views particionadas requerem o uso de nomes de
três ou quatro partes, como nome_ do_servidor.nome_do_banco_de
dados. Nome_do_proprietário.nome_do_objeto.
Objetivos
8) Altere a view de modo que ela seja criada com a opção WITH ENCRYPTION.
Criação
Quando um procedimento armazenado é criado, as instruções que ele contém são
analisadas para verificar sua precisão sintática. Depois, SQL Server armazena o
nome do procedimento armazenado na tabela do sistema sysobject (objetos do
sistema) e seu texto na tabela do sistema syscomments (comentários do
sistema), dentro do banco de dados atual.
Otimização
Quando um procedimento armazenado passa com êxito pelo estágio de resolução,
o otimizador de consultas do SQL Server analisa as instruções Transact-SQL do
procedimento e cria um plano que contém o método mais rápido de acesso aos
dados. Para fazer isso, ele leva em consideração:
Compilação
A compilação diz respeito ao processo de análise do procedimento armazenado e
de um plano de execução que é armazenado no cache de procedimentos. Esse
cache contém os planos de execução de procedimentos armazenados mais
importantes.
Plano de consulta
A maior parte do plano de execução encontra-se nessa estrutura de dados
reentrante, somente leitura, que pode ser usada por inúmeros usuários.
Contexto de execução
Cada usuário que executando a consulta no momento possui essa
estrutura de dados reutilizável, que armazena os dados específicos de sua
execução, como os valores de parâmetros. Se um usuário executar uma
consulta, e uma das estruturas não estiver em uso, ela será reinicializado
com o contexto de novo usuário.
Observação:
Para obter mais informações sobre os planos de execução paralelos,
consulte o tópico “Degree of Parallelism” (Grau de paralelismo) no
Books Online (livros on-linee) do SQL Server.
Uma instrução CREATE PROCEDURE não pode ser combinada com outras
instruções SQL em um único lote;
Instrução_sql [ …n]
Exemplo:
Atualiza o campo valororiginal na tabela flan.
USE corpore
GO
CREATE PROCEDURE dbo.atualizavalor
AS
UPDATE flan set valororiginal=0 where valoriginal IS NULL
go
EXEC atualizavalor
[[EXEC [UTE]]
{
[@status_do_retorno=]
nome_do_procedimento [;numero] |
@var_nome_do_procedimento }
}
[[ @parametro ={ valor | @variavel [OUTPUT] | [DEFAULT]]
[,...n]
[WITH RECOMPILE]
Exemplos:
01) A instrução a seguir executa um procedimento armazenado que
lista todos os pedidos vencidos.
EXEC listapedidosvencidos
USE curso
go
CREATE PROCEDURE dbo.Clientes_lanc
AS
SELECT
fcfo.codcfo,fcfo.nome,fcfo.valor
FROM
flan
EXEC Clientes_lanc
Sintaxe:
USE corpore
GO
ALTER PROCEDURE dbo.Clientes_lanc
AS
SELECT
fcfo.codcfo,fcfo.nome, flan.valororiginal
FROM
flan
JOIN
fcfo
ON
flan.codcolcfo=fcfo.codcoligada and
flan.codcfo=fcfo.codcfo
WHERE
flan.valororiginal>35000.00 and
flan.pagrec=1
ORDER BY
flan.valororiginal desc
Sintaxe:
Exemplo:
Este exemplo descarta o procedimento armazenado Clientes_lanc
USE corpore
GO
DROP PROCEDURE dbo.Clientes_lanc
Exemplo:
Você pode adicionar parâmetro a um procedimento armazenado que
pesquisa a tabela de funcionarios para localicar os funcionarios cuja
data de contratação corresponde a uma data espeficicada. Depois você
poderá executar o procedimento toda vez que desejar espeficicar uma
data de contratação diferente.
Observação:
Os padrões de parâmetro devem ser constantes ou NULL. Ao
espeficicar NULL como um valor padrão de um parâmetro, você deve
usar =NULL; IS NULL não funcionorá, pois a sintaxe não oferece
suporte à designação ANSI NULL.
USE corpore
go
CREATE PROCEDURE dbo.turnover (@datainicial datetime, @datafinal
datetime)
AS
SELECT
pfunc.chapa,pfunc.nome,pfunc.datademissao
FROM
pfunc
WHERE
pfunc.datademissao between @datainicial and @datafinal
ORDER BY
pfunc.datademissao
Sintaxe:
[, [ EXEC [ UTE ] ]
{
[@status_do_retorno ]
{ nome_do_procedimento [; numero] |
@var_nome_do_procedimento }
}
[ [ @parametro= { valor | @variavel [ OUTPUT ] | [ DEFAULT ] ]
[,..N]
[ WITH RECOMPILE ]
Exemplo:
exec turnover @datainicial='01/01/2006',@datafinal='01/01/2007'
Ao passar valores por posição, você poderá omitir os parâmetros quando existirem
padrões, mas não poderá interromper a sequência. Por exemplo, se um
procedimento armazenado tiver cinco parâmetros, você poderá omitir o quarto e o
quinto parâmetros, mas não poderá omitir o quarto parâmetro e espeficicar o
quinto.
Exemplo:
exec turnover '2006-01-01',2007-01-01’
Exemplo:
1) Cria um procedimento armazenado que calcular porcentagem de
determinado valor. Este exemplo usa a instrução SET. No entanto, você
também pode usar a instrução SELECT para concatenar uma
sequência dinamicamente. Uma instrução SET requer que você declare
uma variável para imprimir a sequência.
Recompile quando:
Recompile usando:
EXECUTE...[WITH RECOMPILE]
Com esse plano otimizado é uma exceção e não a regra, quando a execução for
concluída, você deverá executar novamente o procedimento armazenado com um
parâmetro que seja passado normalmente. Essa opção também será útil se os
dados tiverem sido significativamente alterados desde que o procedimento
armazenado foi compilado pela última vez. Esse exemplo recompila o
procedimento armazenado sp_help no momento em que ele é executado.
Sp_recompile
O procedimento armazenado do sistema sp_recompile recompila o procedimento
armazenado do sistema ou disparador espefificado na próxima vez que ele é
executado. Se o parâmetro @objname especificar uma tabela ou view, todos os
procedimentos armazenados que usam o objeto designado serão recompilados na
próxima vez que forem executados.
Observação:
Você pode usar DBCC FREEPROCCACHE para desmarcar todos os
planos de procedimentos armazenados do cache.
Instrução RETURN
A instrução RETURN sai de uma consulta ou procedimento armazenado de modo
não condicional. Ela também pode retornar um valor inteiro de status (código de
retorno);
Exemplo:
Este exemplo cria o procedimento armazenado Rep_lanc que recupera
informacoes da tabela Flan de determinado lançamento. A instrução
RETURN do procedimento armazenado Rep_lanc retorna o número
total de registros da instrução SELECT para outro procedimento
armazenado.
USE corpore
GO
CREATE PROCEDURE dbo.Rep_lanc
@idlan int
Sp_addmessage
Esse procedimento armazenado permite que os desenvolvedores criem
mensagens de erro personalizadas. O SQL Server trata as mensagens de erro do
sistema e personalizadas da mesma forma. Todas as mensagens são
armazenadas na tabela sysmessages no banco de dados master. Essas
mensagens de erro também podem ser gravadas automaticamente no log de
aplicativos do Windows.
Exemplo:
Este exemplo cria uma mensagem de erro definida pelo usuário que
requer que a mensagem seja gravada no log de aplicativos do
Windows 2000 ou Windows 2003 quando ela ocorre.
EXEC sp_addmessage
@msgnum =500102,
@lang='English',
@severity=10,
@msgtext='Cliente não pode ser deletado.',
@with_log='true'
@@error
Esta função do sistema contém o número do erro referente à instrução Transact-
SQL executada mais recentemente. Ela é limpa e redefinida toda vez que uma
instrução é executada. Um valor igual a O será retomado se a instrução for
executada com êxito. Você poderá usar a função do sistema @@error para detectar
um número de error especifico ou para sair de m procedimento armazenado de
modo condicional.
Exemplo:
USE corpore
GO
ALTER PROCEDURE dbo.atualizavalor
AS
BEGIN TRANSACTION
UPDATE flan set valororiginal=0 where valororiginal IS NULL
IF @@error <> 0
BEGIN
ROLLBACK TRAN
RETURN
PRINT 'PROBLEMAS NA ATUALIZAÇÃO'
END
ELSE
PRINT 'REGISTROS ATUALIZADOS '+@@ERROR
COMMIT TRAN
go
Instrução RAISERREOR
A instrução RAISERROR retorna uma mensagem de error definida pelo usuário e
define um sinalizador do sistema para registrar a ocorrência de um erro. Você deve
especificar um nível de gravidade do erro e o estado da mensagem quando estiver
usando a instrução RAISERROR.
Exemplo:
RAISERROR (50010,16,1) WITH LOG
Você pode usar as ferramentas a seguir para ajudar a identificar a origem dos
problemas de desempenho que podem estar relacionados à execução de
procedimentos armazenados.
SQL Profiler
O SQL Profiler (analisador de perfis do SQL) é uma ferramenta gráfica que permite
monitorar eventos, como, por exemplo, quando o procedimento armazenado foi
iniciado ou concluído, ou quando instruções Transact-SQL individuais de um
procedimento armazenado foram iniciadas ou concluídas. Além disso, você pode
monitorar se um procedimento armazenado encontra-se no cache de
procedimentos.
Observação:
Cuidado ao criar procedimentos armazenados aninhados. Esses
procedimentos adicionam um nível de complexidade que poderá tornar
difícil a solução de problemas de desempenho.
Objetivos
6) Crie uma procedure de nome P_VALOR_LANC que tenha como retorno o valor
do lançamento (FLAN. VALORORIGINAL) de determinado lancamento passado
como parametro (FLAN.IDLAN).
7) Crie uma tabela conforme informações abaixo:
Este assunto fornece uma visão geral das funções definidas pelo usuário. Ele
explica por que e como usá-las e a sintaxe usada para criá-las.
Funções escalares:
Semelhantes a funções internas.
Com o Microsoft SQL Server 2000, você pode criar suas próprias funções para
completar e estender as funções fornecidas pelo sistema (internas). Uma função
definida pelo usuário pode não ter nenhum ou ter vários parâmetros de entrada e
retorna um valor escalar ou uma tabela.
Funções escalares
As funções escalares assemelham-se às funções internas.
Sintaxe:
Exemplo:
USE corpore
GO
CREATE FUNCTION fn_maiorsalario
(@codcoligada int)
RETURNS numeric(15,4)
as
BEGIN
DECLARE @salario numeric (15,4)
SELECT @salario=max(salario) from pfunc where
codcoligada=@codcoligada
RETURN @salario
END
Restrições às funções
As funções não-determinísticas são funções, como GETDATE( ), que podem
retornar valores de resultados diferentes toda vez que são chamadas com o
mesmo conjunto de valores de entrada. Não são permitidas funções não
determinadas pelo usuário.
@@ERROR
@@IDENTITY
@@ROWCOUNT
@@TRANCOUNT
APP_NAME
CURRENT_TIMESTAMP
CURRENT_USER
DATENAME
FORMATMESSAGE
GETANSINULL
GETDATE
GetUTCDate
HOST_ID
HOST_NAME
IDENT_INCR
IDENT_SEED
IDENTITY
NEWID
PERMISSIONS
SESSION_USER
STATS_DATE
SYSTEM_USER
TEXTPTR
TEXTVALID
USER_NAME
Você pode usar a vínculação de esquemas para vincular a função aos objetos de
banco de dados aos quais ela faz referência. Se uma função for criada com a opção
SCHEMABINDING, os objetos do banco de dados aos quais ela faz referência não
poderão ser alterados (com a instrução ALTER) nem descartados (com uma
instrução DROP).
USE corpore
GO
alter FUNCTION fn_maiorsalario
Descartando funções
A vantagem de alterar uma função em vez de descartá-la é a mesma das views e
dos procedimentos. As permissões da função são mantidas e aplicadas à função
revisada.
Descarte uma função definida pelo usuário usando a instrução DROP FUNCTION.
Exemplos:
Funções definidas pelo usuário:
Uma função escalar retorna um valor único do tipo de dados definido em uma
cláusula RETURNS. O corpo da função, definido em um bloco BEGIN...END,
contém a série de instruções Transact-SQL que retomam valor de. O tipo de
retomo poderá ser qualquer tipo de dado, exceto text, ntext, image, cursor ou
timestamp.
Exemplos:
Funções escalar definida pelo usuário
Criando a função;
Chamando a função.
A função com valor de tabela e várias instruções é uma combinação de uma view
com um procedimento armazenado. Você pode usar funções definidas pelo
usuário que retornam uma tabela para substituir procedimentos armazenados ou
views.
Uma função com valor de tabela (com um procedimento armazenado) pode usar
uma lógica complexa e várias instruções Transact-SQL para criar uma tabela. Você
pode usar uma função com o valor de tabela na cláusula FROM de uma instrução
Transact-SQL da mesma maneira que usa uma view.
Exemplos:
Funções com valor de tabela e várias instruções
• Criando a função;
• Chamando a função.
USE CORPORE
GO
ALTER FUNCTION FN_FORNECEDORES
(@ESTADO VARCHAR(20))
RETURNS @FN_FORNECEDORES TABLE
(CODCFO VARCHAR(20) PRIMARY KEY NOT NULL,
NOME VARCHAR (50) NOT NULL)
AS
BEGIN
INSERT INTO @FN_FORNECEDORES
SELECT CODCFO,NOME
FROM
FCFO
WHERE CODETD=@ESTADO AND CODCOLIGADA=1
RETURN
END
Exemplos:
Função com valor de tabela in-line
Criando a função
Chamando a função usando um parâmetro
Dica:
As funções in-line podem aumentar significativamente o desempenho
quando usadas com views indexadas. O SQL Server executa
operações complexas de agregação e associação quando o índice é
criado. As consultas subseqüentes podem usar uma função in-line
com um parâmetro para filtrar registros do conjunto de resultados
simplificado armazenado.
Práticas recomendadas
Use funções escalares complexas em conjunto de resultados pequenos;
Use funções de varias instruções em vez de procedimentos armazenados
que retornam tabelas;
Use funções in-line para criar views usando parâmetros;
Use funções in-line para filtrar views indexadas
Use funções in-line para filtrar views. O us de funções in-line com views
indexadas poderá aumentar significativamente o desempenho.
Objetivos
6) Crie uma função escalar definida pelo usuário chamado fn_ult_id para trazer o
ultimo IDLAN incluído na tabela FLAN. Ele dever como parâmetro o código da
coligada e como retorno um tipo de dados inteiro.
Criar um disparador;
Descartar um disparador;
Alterar um disparador;
Descrever como os disparadores funcionam;
Avaliar as considerações de desempenho que afetam o uso de
disparadores.
Introdução a disparadores
O que são disparadores?
Uso de disparadores;
Considerações sobre o uso de disparadores;
Esta seção apresenta disparadores e descreve quando e como usá-los.
O que são disparadores?
Associados a uma tabela;
Chamados automaticamente;
Não podem ser chamados diretamente;
É parte de uma transação.
Chamados automaticamente
Quando há uma tentativa de inserir, atualizar ou excluir dados em uma
tabela, e um disparador tiver sido definido na tabela para essa ação
especifica, ele será executado automaticamente. Ele não poderá ser
ignorado.
Não podem ser chamados diretamente
Ao contrario dos procedimentos armazenados do sistema padrão, os
disparadores não podem ser chamados diretamente e não passam nem
aceitam parâmetros.
Uso de disparadores
Exemplo:
Um disparador de exclusão na tabela Products (produtos) do banco de
dados Northwind pode excluir os registros correspondentes em outras
tabelas que possuem registros com os mesmos valores de ProductID
(identificação do produto) excluídos.
Um disparador faz isso usando a coluna de chave externa ProductID como uma
forma de localizar registros na tabela Order Details (detalhes do pedido).
Você pode usar disparadores para impor uma integridade referencial complexa
das seguintes maneiras:
Observação:
Os dados redundantes e derivados geralmente requerem o uso de
disparadores.
Observação:
As restrições, regras e padrões podem comunicar erros somente
através de mensagens de erro padronizadas do sistema. Se o seu
aplicativo exigir (ou puder tirar vantagem de) mensagens
personalizadas e o tratamento de erros mais complexos, você deverá
usar um disparador.
Uma ação INSERT, UPDATE ou DELETE que chama um disparador pode afetar
vários registros. Você poderá:
Definindo disparadores
Esta seção aborda como criar, alterar e descartar disparadores. Ela também aborda
as permissões necessárias e as diretrizes que devem ser seguidas ao se definir
disparadores.
Sintaxe:
Observação:
O SQL Server não oferece suporte para a adição de disparadores
definidos pelo usuário nas tabelas do sistema; portanto, não será
possível criar disparadores nessas tabelas.
Permissões apropriadas
Os proprietários das tabelas, bem como os participantes dos cargos proprietário
do banco de dados (db_owner) e administradores do sistema (sysadmin), têm
permissão para criar um disparador.
Caso contrário, o objeto será criado tendo o seu nome de usuário como o
proprietário.
ALTER DATABASE;
CREATE DATABASE;
DISKINIT;
DISKRESIZE;
DROP DATABASE;
LOAD DATABASE;
LOAD LOG;
RECOFIGURE;
RESTORE DATABASE;
RESTORELOG.
Alterando um disparador
Se for necessário alterar a definição de um disparador existente, você poderá
alterá-lo sem precisar descartá-lo.
Sintaxe:
Exemplo:
USE corpore
go
ALTER TRIGGER PFUNC_UPDATE_SALARIO
ON PFUNC
FOR DELETE
AS
BEGIN
Sintaxe parcial:
Descartando um disparador
Você poderá alterar ou descartar um disparador. Poderá remover um disparador
descartando-o. Os disparadores são descartados automaticamente sempre que as
tabelas associadas são descartadas.
Você pode definir um disparador para que seja executado sempre que uma
instrução INSERT inserir dados em uma tabela. Quando um disparador INSERT é
acionado, novos registros são adicionados à tabela de disparadores e à tabela
inserted (inserido). A tabela inserted é uma tabela lógica que armazena uma
cópia dos registros que foram inseridos. Essa tabela contém a atividade de
inserção registrada no log da instrução INSERT.
Ela permite que você faça referência aos dados registrados no log da instrução
INSERT que iniciou a operação. O disparador pode examinar a tabela inserted
para determinar se ou com as suas ações devem ser executadas. Os registros da
tabela inserted sempre são copias de um ou mais registros da tabela de
procedimentos armazenados.
É alocado espaço da memória para criar a tabela deleted. Essa tabela está
sempre no cache;
Uma instrução UPDATE pode ser analisada em duas etapas: a etapa DELETE que
captura a imagem anterior dos dados e a etapa INSERT que captura a imagem
posterior dos dados. Quando uma instrução UPDATE é executada em uma tabela
que contém um disparador definido, os registros originais (imagem anterior) são
movidos para a tabela deleted e os registros atualizados (imagem posterior) são
inseridos na tabela inserted.
Ao detectar que a coluna foi atualizada, ele poderá tornar a ação adequada, como,
por exemplo, gerar uma mensagem de erro informado que a coluna não pode ser
atualizada ou processar uma série de instruções com base no valor da coluna
atualizada recentemente.
Sintaxe:
USE corpore
go
CREATE TRIGGER PFUNC_UPDATE
ON PFUNC
FOR UPDATE
AS
Testando o disparador
Disparadores recursivos
Qualquer disparador pode conter uma instrução UPDATE, INSERT ou DELETE que
afete a mesma ou outra tabela. Com a opção de disparador recursivo ativada, um
procedimento que altere dados em dados em uma tabela poderá ativar a si mesmo
novamente, em uma execução recursiva. A opção de disparador recursivo está
desativada por padrão quando um banco de dados é criado, mas você pode ativá-
la usando para alterar o banco de dados.
Observação:
Use o procedimento armazenado do sistema sp_settriggerorder para
especificar um disparador que seja acionado como o primeiro
disparador AFTER, ou o último disparador AFTER. Não há uma ordem
fixa para execução de vários disparadores definidos para um
determinado evento. Cada disparador deve ser independente.
Exemplo:
Um aplicativo atualiza a tabela T2, fazendo com que o disparador Trig2
seja acionado. Trig2 atualiza a tabela T3 novamente, fazendo com que
o disparador Trig3 seja acionado novamente. Trig3, por sua vez,
atualiza a tabela T2, fazendo com que Trig2 seja acionado novamente.
Os disparadores recursivos podem ser úteis quando você tiver que manter:
Exemplo:
Suponha que dois disparadores de atualização, trupdateemployee e
trupdate manager, sejam definidos na tabela employee. O
procedimento tr_ipdateemployee atualiza a tabela employee.
Objetivos
Criar disparadores.
Alterar disparadores.
Descartar disparadores.
Consulta ad hoc
Para acessar dados remotos quando não pretende acessar uma fonte de
dados repetidamente, você pode escrever uma consulta ad hoc com a
função OPENROWSET ou OPENDATASOURCE.
Você pode acessar dados ad hoc a partir de fontes remotas usando um provedor
OLE DB. A função OPENROWSET permite que você se conecte e acesse dados a
partir de uma fonte remota sem configurar um servidor vinculado. Use a função
OPENROWSET quando você não pretender acessar uma determinada fonte de
dados repetidamente.
A tabela a seguir lista alguns nomes comuns de provedores OLE DB. Consulte
Books Online (livros on-line) do SQL Server para obter uma lista mais completa de
nomes de proedores OLE DB referentes a várias fontes de dados.
É possível definir uma fonte que seja SQL Server como um servidor
vinculado se houver um provedor OLE DB disponível para essa fonte;
Sintaxe:
Exemplos:
01) Este exemplo adiciona o Servidor02, a um computador que
executa o SQL Server, á lista de servidores vinculados disponíveis a
partir do computador SQL Server local.
Você pode mapear contas de login e senha entre os servidores SQL Server
local remoto usando o procedimento armazenado do sistema
sp_addlinkdsrvlogin. Ao mapear uma conta local para uma conta de login
remota, você não precisa criar uma conta de login e senha para cada
usuário no SQL Server remoto.
Exemplo:
Um usuário pode efetuar login em um aplicativo cliente que acesse um
SQL Server local, o SQL Server local então acessa o servidor vinculado
em um nome do usuário usando uma conta de login para todos os
usuários finais. A conta de login no servidor vinculado para o qual a
conta de login local é mapeada tem permissão para acessar uma tabela
especifica.
Sintaxe:
Exemplo:
Um usuário conectando localmente no SERVIDOR1 para acessar dados
remotos no servidor SERVIDOR2.
SP_ADDLINKEDSRVLOGIN
@rmtsrvname= 'SERVIDOR2'
@useself=]'FALSE'
@locallogin=] 'RH_SERVIDOR1'
@rmtuser =] 'RH_SERVIDOR2'
@rmtpassword=] '1Q2W3E4R'
Sintaxe:
Segue as opções:
Collation Compatible
A opção Collation Compatible afeta o desempenho da execução de consultas
distribuídas em relação a servidores vinculados. Se essa opção for definida como
TRUE, o SQL Server entenderá que os conjuntos de caracteres e colunas no
servidor remoto são compatíveis com a intercalação do servidor local. Esta opção
permite que o SQL Server envie ao provedor as comparações nas colunas de
caracteres. Se essa opção não for definida, o SQL Server deverá retornar todos os
registros ao servidor local para avaliar as comparações nas colunas de caracteres.
Essa opção só deverá ser definida se a fonte de dados que corresponde ao
servidor vinculado tiver o mesmo conjunto de caracteres e ordem de classificação
do servidor local.
Exemplo:
EXEC SP_SERVEROPTION 'SERVIDOR1','COLLATION
COMPATIBLE','TRUE'
Collation Name
Esta opção especificará o nome da intercalação usada pela fonte de dados remota
se use remote collation for true e a fonte de dados não for uma fonte de dados do
SQL Server. As seguintes condições se aplicam a essa opção.
O nome deve ser uma das intercalações ás quais o SQL Server dá suporte;
Você deve usar essa opção ao acessar uma fonte de dados OLE DB que
não seja do SQL Server, que tenha uma intercalação que corresponda a
uma das intercalações do SQL Server;
Data Access
Ativa e desativa um servidor vinculado para o acesso a consultas distribuídas.
Você só pode usá-la para as entradas de sysserver adicionadas por meio de
sp_addlinkdserver.
RPC
A opção RPC ativa chamadas de procedimento remoto (RPCs, remote procedure
calls) a partir de determinado servidor.
RPC out
A opção RPC out (Saída de RPC) ativa RPCs para determinado servidor.
Nome_do servidor.Nome_do_catálogo.Nome_do_esquema.Nme_do_objeto
Exemplos:
Execução de consultas em servidores vinculados.
Sintaxe:
Exemplos:
1) SELECT * FROM OPENQUERY
(servidor2,'SELECT IDLAN,CODCFO FROM
corpore.dbo.flan')
2) DELETE FROM OPENQUERY (servidor2,'corpore.dbo.fcfo')
Sintaxe:
Exemplo:
O exemplo a seguir usa uma transação distribuida para transferir uma
pessoa cadastrada no sevidor1 par ao servidor2 . O procedimento
armazenado P_tpessoa transefere uma pessoa cadastrada na tabela
PPESSOA no database CORPORE no servidor1 para a tabela
candidatos parao banco TALENTO no servidor2.
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION
EXEC corpore.dbo.P_tpessoa
COMMIT TRAN
Tre i na m e nt os R M S ist e ma s
CORPORE RM RECU RSOS H UM AN OS Rotinas Anuais 13º Salário - RM Labore
• Cadastros de Eventos e Sindicatos
Folha de Pagamento - RM Labore
• Processamento de 1ª e 2ª Parcelas
• Processo de Admissão • Códigos de Cálculos Envolvidos no Processamento.
• Filtros
• Tabelas Dinâmicas e de Cálculo
• Alterações Globais CORPORE RM ERP
• Processo de Lançamento da Folha
• Emissão de Relatórios Faturamento, Compras, Estoque e Contratos -
• Encerramento da Folha e 13º Salário RM Nucleus
• Férias individuais e Coletivas, Escala de Férias • Cadastros Básicos
• Acerta Período Aquisitivo • Gradze Numerada por produto
• Rescisão, Rescisão Complementar, Rescisão Coletiva • Compras
• GRFC, DIRF, Informe de Rendimentos, RAIS. • Controle de Estoque
• Faturamento
Automação de Ponto - RM Chronus • Cancelamento de Movimento
• Horários, Abonos, Terminais de Coleta, Crachás, Grupo • Contratos
de Descanso, Compensação de Dia Ponte • Ressuprimento.
• Visitantes
• Refeições Contabilidade Gerencial - RM Saldus
• Parâmetros RM Chronus, Coletivos e Funcionários • Cadastros Básicos: Plano de Contas Contábil, Gerencial
• Movimentação: Importação de batidas, Lançamentos e Paralelo, Histórico Padrão
globais, Cancelamento do movimento, Compensação • Implantação do Saldo do Período Anterior
do banco de hora, Digitação de batidas, Lançamento de • Orçamento
eventos para o RM Labore • Manutenção de Lançamentos
• Geração de Relatórios • Agendamento de Lançamentos
• Encerramento do período de apuração do ponto • Emissão dos principais relatórios
• Cálculo por Jornada. • Apuração do Resultado do Exercício
• Liberação do Período.
Gestão do Conhecimento – RM Testis
• Áreas de Conhecimento Escrituração e Controle Fiscal - RM Liber
• Provas
• Cadastros Básicos
• Pessoas
• Lançamentos
• Utilitários e Campos Complementares
• Apuração de Tributos Federais
• Cálculo dos Impostos: ICMS, IRPJ, etc.
Integrações CORPORE RM – foco em RH
• PAT (Programa de Alimentação do Trabalhador)
• Admissão • Rotinas Legais
• Controle de Benefícios • Rotinas Federais
• Quadro de Lotação • Geração das Guias
• Tabelas Salariais • Relatórios Fiscais.
• Controle dos Membros da CIPA
• Controle de Atestados e Apuração de Freqüência Controle Financeiro - RM Fluxus
• Lançamentos Financeiros da Folha de Pagamento
• Cadastros Básicos
• Geração de RPA para guia INSS
• Clientes e Fornecedores
• Contabilização
• Orçamento
• Manutenção de Lançamentos e Lançamento Padrão
Gestão Recursos Humanos - RM Vitae
• Cancelamento e Baixa de Lançamentos
• Cargos e Salários • Adiantamento e Devolução
• Controle de Lotação • Acordo
• Recrutamento e Seleção • Parcelamento e Utilização de Cheques
• Treinamento • Faturas, Extratos de Caixa e Aplicação Financeira
• Programa de Qualidade de Vida • Cobrança e Pagamento Eletrônico
• Processos Jurídicos • Módulo Caixa.
• Segurança e Medicina do Trabalho: Controle de Exames
Médicos, Controle de Riscos Ambientais, Ocorrência de Controle Patrimonial - RM Bonum
Acidente de Trabalho (CAT), Controle de EPIs, Acidente
• Cadastros Básicos
de Trabalho, Comissão da CIPA, Proteção Contra
• Inventário
Incêndio, Emissão do Relatório PPP. • Movimentações: Baixa de Bens,Transferência de Bens,
Acréscimos, Conversão, UFIR/REAL, Recálculo para 2ª
Integração RM Labore x RM Saldus Moeda, Tabela de Índices, Alteração da taxa de
• Parâmetros do RM Saldus depreciação
• Histórico Padrão • Relatório de Contabilização
• Plano de Contas Contábeis e de Contas Gerenciais • Razão Auxiliar
• Encargos Contábeis • Instruções Normativas
• Agrupamento de Contas Contábeis e Gerenciais • Integração com RM Saldus e com RM Nucleus
• Histórico de Provisões e Encargos • Liberação de Período.
• Lançamentos Contábeis e Tipos de Contabilização
Integrações CORPORE RM - foco Administrativo
Fórmulas RM Labore (RM Nucleus x RM Fluxus / RM Nucleus x RM Saldus /
RM Fluxus x RM Saldus)
• Fórmulas Aplicadas ao RM Labore
• Fórmulas de Cálculo, de Seleção e de Crítica Global • Parametrização dos Tipos de Movimentos para
• Estrutura de Repetição integração Financeira e Contábil no RM Nucleus
• Tipos de Constantes e de Operações • Parametrização da integração contábil no RM Fluxus
• Estrutura Condicional • Cadastro de Eventos Contábeis
• Funções e Montagem de Fórmulas. • Cadastro dos defaults contábeis.
CO RPO RE RM P RO JET OS - G ES T ÃO DE O BRAS E MÓDU L O IM OB IL IÁ R IA
P R O JE TO S
Gestão Imobiliária – RM SGI
Gerenciamento de Obras e Projetos - RM Solum • Cadastros Básicos
• Elaboração de um Orçamento Completo • Controle de Vendas e Cobrança
• Cotação de preços dos insumos na unidade orçada ou • Contratos
na unidade de compra. • Aditivos
• Cálculo do Custo Horário de Equipamentos e de Mão- • Reajuste de Correção e Distrato
de-obra • Manutenção de Parcelas
• Cronograma Previsto x Real x Medido. • Controle de Aluguéis
• Cronograma Desembolso • Relatórios
• PERT - (Técnica de Avaliação e Revisão de Programas) • Modelos de Cálculo.
• Integração com o MS Project/Excel
• Apropriação de Insumos/Composição MÓDU L O C R M
• Medição de Contratos (Reajuste, Realinhamento,
Retenções / Adiantamentos) Gestão de Atendimento e Relacionamento –
• Aditivos de Contratos RM Agilis
• Medição Via PALM • Atendimentos via RM Agilis
• Concorrência Eletrônica. • Status, Dados e pesquisa de Atendimentos
• Informações de Clientes
C O R P O R E R M E D U C AC I O NA L - G E S T Ã O E S C O L A R • Estatísticas de Suporte
• Financeiro
Gestão Educacional - RM Classis • Atendimento Eletrônico
• Cadastros das Tabelas Relativas à Secretaria e • Marketing Via RM Agilis
Tesouraria • Tipo de Mídia
• Demais Cadastros: Cursos, Disciplinas, Grade • Segmento
Curricular, Período Letivo, Turmas, Alunos, Professores • Script de Telemarketing
• Processos da Secretaria:Rotinas de Matrícula e • Tipo de Ação
Rematrícula, Digitação de Notas, Correção de Gabarito • Catálogo de Canais
de provas, Transferência de Grade Curricular, • Campanhas
Fechamento de Período Letivo, Exame Nacional de • Motivo de Contato Perdido
Cursos • Prospect/Suspect
• Processos da Tesouraria: Rotinas de Geração de • Operações de Telemarketing
Lançamentos Financeiros e Cobrança, Consulta de • Relatórios de Ligações.
lançamentos (Títulos), Cadastro de Planos de
Pagamento, Controle de Bolsas, Agendamento de G ERA DO RES D E R ELAT ÓR I OS E CONS U LT AS À B AS E
Geração de Lançamentos, Exportação no padrão CNAB. CORPORE RM
Controle de Biblioteca - RM Biblios Gerador de Relatórios do CORPORE RM
• Cadastros Básicos • Criação de Relatório buscando dados diretamente da
• Regras de Empréstimos base de dados
• Movimentações de Empréstimos, Devoluções e • Criação de Relatórios utilizando sentença SQL
Reservas • Relacionamento entre as Tabelas
• Controle de Periódicos • Formatação de Relatórios
• Pesquisas Simples e Avançadas no acervo • Criação de relatórios com tipo “Arquivo Bancário”
• Integração RM Biblios x RM Classis e RM Biblios x RM • Utilização de Planilha eletrônica: inserção de dados e
Fluxus. criação de gráficos
• Assistente para Montagem de Relatórios.
C O R P O R E R M P R O D U Ç ÃO
C ONS UL TA S SQL À B A SE C OR P OR E R M + R M B I S
Planejamento e Controle da Produção - RM Factor
• Otimização do uso de recursos físicos e financeiros Consultas SQL
• Avaliação de desempenho e correção de desvios • Introdução Teórica
• Dimensionamento da interferência de variáveis • Banco de dados Relacional
• Ágil fornecimento de informações detalhadas • Estrutura Cliente/Servidor
• Cumprimento de prazos e garantia de qualidade dos • Relacionamento entre tabelas
serviços prestados • Cláusulas: SELECT, FROM, WHERE, GROUP BY, ORDER
• Controle de manutenção preventiva e corretiva BY, HAVING, UNION, OUTER JOIN
• Acompanhamento de ordens de serviço • Consultas com Junção (INNER JOIN)
• Integração com Faturamento e Recursos Humanos • Exemplos de aplicação das Consultas SQL
• Acompanhamento de índices de produtividade / serviços • Exercícios Práticos contemplando consultas aos
• Controle da inadimplência. aplicativos RM Fluxus, RM Saldus, RM Nucleus e RM
Labore.
M Ó D U LO MA N U T E N Ç ÃO
RM Bis
Manutenção e Assistência Técnica - RM Officina • Conceito de BI (Business Intelligence)
• Mão-de-Obra, Fabricantes, Problemas de Manutenção, • Cadastros de Tipos de Cubos
Organograma, Acompanhamento de Processos, • Criação e Edição de Cubos
Objetos de Manutenção, Postos de Atendimento, • Áreas de divisão de um Cubo
Atendentes, Tabelas Auxiliares • Alterando a Análise de Dados
• Operações: Ordem de Serviço, Agendamento de • Gráficos.
Serviço, Contratos de Manutenção, Análise de
Movimentos e Problemas, Atendimento, Lançamento
de Indicadores de Uso, Índices de Acompanhamento, Para visualizar a programação de nossos cursos, acesse
Ocupação de Mão-de-Obra, Desempenho e Controle de w w w.rm .com .b r
pneus.