Você está na página 1de 6

[1001]

set ansi_nulls on

Quando ANSI_NULLS é definido como ON,


uma instrução SELECT que usa WHERE column_name = NULL
retornará zero linha, mesmo que haja valores nulos em column_name.
Uma instrução SELECT usando WHERE column_name <> NULL
retorna zero linha mesmo que haja valores não nulos em column_name.

Quando ANSI_NULLS for OFF, os operadores de comparação Igual a (=)


e Não Igual a (<>) não seguem o padrão ISO. Uma instrução SELECT
que usa WHERE column_name = NULL retorna as linhas que têm
valores nulos em column_name. Uma instrução SELECT que usa WHERE
column_name <> NULL retorna as linhas que têm valores não nulos
na coluna. Além disso, uma instrução SELECT que usa WHERE
column_name <> XYZ_value retorna todas as linhas que não são
XYZ_value e que não são nulas.
Quando ANSI_NULLS for ON, todas as comparações em relação
a um valor nulo serão avaliadas como UNKNOWN

Expressão booliana SET ANSI_NULLS ON SET ANSI_NULLS OFF


NULL = NULL DESCONHECIDO TRUE
1 = NULL DESCONHECIDO FALSE
NULL <> NULL DESCONHECIDO FALSE
1 <> NULL DESCONHECIDO TRUE
NULL > NULL DESCONHECIDO DESCONHECIDO
1 > NULL DESCONHECIDO DESCONHECIDO
NULL IS NULL TRUE TRUE
1 IS NULL FALSE FALSE
NULL IS NOT NULL FALSE FALSE
1 IS NOT NULL TRUE TRUE

---------------------------------------------------------------------
set quoted_identifier ON

Quando SET QUOTED_IDENTIFIER for ON (padrão),


os identificadores podem ser delimitados por aspas
duplas (" "), e os literais precisam ser delimitados
por aspas simples (' '). Todas as cadeias de caracteres
delimitadas por aspas duplas são interpretadas
como identificadores de objeto. Portanto identificadores
entre aspas não precisam seguir as regras Transact-SQL
para identificadores. Elas podem ser palavras-chave
reservadas e incluir caracteres geralmente não permitidos
nos identificadores Transact-SQL. Aspas duplas não podem
ser usadas para delimitar expressões de cadeias
de caracteres literais.

SET QUOTED_IDENTIFIER OFF


GO
------------------------------
SET QUOTED_IDENTIFIER OFF;
GO

USE AdventureWorks2012;
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'Test')
DROP TABLE dbo.Test;
GO
USE AdventureWorks2012;
CREATE TABLE dbo.Test (ID INT, String VARCHAR(30)) ;
GO

-- Literal strings can be in single or double quotation marks.


INSERT INTO dbo.Test VALUES (1, "'Text in single quotes'");
INSERT INTO dbo.Test VALUES (2, '''Text in single quotes''');
INSERT INTO dbo.Test VALUES (3, 'Text with 2 '''' single quotes');
INSERT INTO dbo.Test VALUES (4, '"Text in double quotes"');
INSERT INTO dbo.Test VALUES (5, """Text in double quotes""");
INSERT INTO dbo.Test VALUES (6, "Text with 2 """" double quotes");
GO

SET QUOTED_IDENTIFIER ON;


GO

-- Strings inside double quotation marks are now treated


-- as object names, so they cannot be used for literals.
INSERT INTO dbo."Test" VALUES (7, 'Text with a single '' quote');
GO

-- Object identifiers do not have to be in double quotation marks


-- if they are not reserved keywords.
SELECT ID, String
FROM dbo.Test;
GO
-- Create statement fails.
CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL,
"order" INT NOT NULL);
GO

SET QUOTED_IDENTIFIER ON;


GO

-- Create statement succeeds.


CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL,
"order" INT NOT NULL);
GO
---------------------------------------------------------------------
set nocount on

Quando SET NOCOUNT é ON, a conta não é retornada.


Quando SET NOCOUNT é OFF, a conta é retornada.
A função @@ROWCOUNT é atualizada mesmo quando SET NOCOUNT está ON.
SET NOCOUNT ON evita o envio de mensagens DONE_IN_PROC
ao cliente para cada instrução em um procedimento armazenado.
Para procedimentos armazenados que contêm várias
instruções que não retornam muitos dados reais,
ou para procedimentos que contêm loops Transact-SQL,
configurar SET NOCOUNT como ON pode fornecer um aumento
significativo no desempenho, porque o tráfego de rede
é reduzido consideravelmente.

---------------------------------------------------------------------

set transaction isolation level read uncommitted


READ UNCOMMITTED
Especifica que as instruções podem ler linhas que
foram modificadas por outras transações, mas que ainda
não foram confirmadas.
Transações em execução em nível READ UNCOMMITTED
não emitem bloqueios compartilhados para impedir
que outras transações modifiquem os dados lidos pela
transação atual. Transações READ UNCOMMITTED também
não são bloqueadas por bloqueios exclusivos que impediriam
a transação atual de ler linhas que foram modificadas,
mas não confirmadas, por outras transações.
Quando essa opção está definida, é possível ler
modificações não confirmadas, chamadas de leituras sujas.
Os valores nos dados podem ser alterados e linhas podem
aparecer ou desaparecer do conjunto de dados antes do término
da transação. Essa opção tem o mesmo efeito de definir
NOLOCK em todas as tabelas em todas as instruções SELECT
em uma transação. Esse é o menos restritivo dos níveis de isolamento.
---------------------------------------------------------------------

OR (MOTI_AJUS_GEEN.NOM_AJUS_GEEN LIKE '%' +LTRIM(RTRIM(@P_NOMAJUSTE))+'%')


VAI RETORNA UM BOOL
------------------------------------------------------------------------
procedures com default values

Alter Procedure [Test]


@StartDate AS varchar(6) = NULL,
@EndDate AS varchar(6) = NULL
AS
----------------------------------

ALTER PROCEDURE [dbo].[SPFU1001_LISTARMOTIVOAJUSTE]


(
@P_CODMOTIVOAJUSTE INT = NULL,
@P_CODSITUACAOAJUSTE INT = NULL,
@P_NOMAJUSTE VARCHAR(50) =NULL,
@P_CODGRUPORESP INT = NULL,
@P_INDPERIOD CHAR(1) = NULL,
@P_USERID_MANT CHAR(8) =NULL
)
-----------------------------------------------------------------------
CASE COMO COLUNA

CASE WHEN [IND_PRDC_AJUS] = 'N' THEN 'PONTUAL' WHEN [IND_PRDC_AJUS]='S'


THEN 'PERIÓDICO' ELSE '' END AS DESC_PRDC_AJUS

-----------------------------------------------------------------------

+++ele coloca os parametros da proc com um valor default NULL


e no WHERE
((@P_CODMOTIVOAJUSTE IS NULL) OR(@P_CODMOTIVOAJUSTE
=MOTI_AJUS_GEEN.NUM_MOTI_AJUS_GEEN))AND
((@P_CODSITUACAOAJUSTE IS NULL) OR (@P_CODSITUACAOAJUSTE =
SITU_AJUS_GEEN.COD_SITU_AJUS_GEEN))

É USADO PARA FILTRO


QUE IGNORA SE FOR NULL VALIDANDO COM BOOL 1 SENAO ELE VERIFICA
O QUE REGRA DA SEGUNDA PARTE DEPOIS DO OR TEM
E RETORNO TODOS COM ESSE FILTRO
TBFU1005+TBFU1002+TBFU1006

-----------------------------------------------------------------------

[SPFU1002_OBTERCADASTROAJUSTE]

...
FROM TBFU1005_MOTI_AJUS_GEEN TB1
where(@p_codMotivoAjuste = TB1.NUM_MOTI_AJUS_GEEN)

pega aqui da tabela TBFU1005_MOTI_AJUS_GEEN


com a @p_codMotivoAjuste = TB1.NUM_MOTI_AJUS_GEEN
[A ORDEM NAO IMPORTA NESSA IGUALDADE QUE RETORNA BOOL]

-----------------------------------------------------------------------
[SPFU1003_ATUALIZARCADASTROAJUSTE]

@p_codMotivoAjuste Int,
@p_nomeAjuste Varchar(50),
@p_indPeriod Char(1),
@p_dtIniVigencia DateTime = NULL,
@p_dtFIMVigencia DateTime = NULL,
...

[DAT_MANT] = getdate()

pega da tabela tbfu1005_moti_ajus_geen


o que tem o num_moti_ajus_geen=@p_codMotivoAjuste
e atualiza com dados que foram inseridos na proc

-----------------------------------------------------------------------

[SPFU1004_INCLUIRCADASTROAJUSTE]

TEM APENAS ALGUNS PARAMETROS IGUAL A NULL


@p_dtIniVigencia datetime = NULL,
@p_dtFimVigencia datetime = NULL,
@p_dtnumDiasExec int = NULL,
as outras serao inseridas

insert into tabela (,,,,,,,) values(13,,,,,,getdate())


dat_mant é para quando foi inserido
13 é para o cod_situ_ajus_geen
na tabela TBFU1005_MOTI_AJUS_GEEN

----------------------------------------------------------------------
[SPFU1005_LISTARSTATUSCADASTROAJUSTE]

PROCEDURE SEM PARAMETROS


N TEM PARENTESES ANTES DO AS

SELECT O COD_SITU_AJUS_GEEN E O NOM_SITU_AJUS_GEEN


TABELA TBFU1006_SITU_AJUS_GEEN

WHERE [COD_SITU_AJUS_GEEN] IN (13,14,18)

---------------------------------------------------------------------
[SPFU1006_LISTARGRUPORESPCADASTROAJUSTE]
SEM PARAMETROS

SELECIONA [COD_GRUP_RSPL_AJUS_GEEN] ,[NOM_GRUP_RSPL_AJUS_GEEN]


DA TBFU1002_GRUP_RSPL_AJUS_GEEN]

--------------------------------------------------------------------
[SPFU1007_LISTARSTATUSPROCESSAMENTO]

---pARAMETROS PARA ORDENACAO E PAGINACAO---


@linhaInicial int =0,
@QtdRegistro int=0,
@Ordenacao varchar(50)='DAT_ATUI DESC'
@TotalRegistros int output
+++++++///output

set @Ordenacao = Upper(@ordenacao)


+++++++++++++++é a mesma coisa @Ordenacao e o @ordenacao
upper ()deixa tudo em maiusculo

select * from ( SUBCONSULTA )

------------------------------------------------------------------
PARA PODER ORDENAR COM UNION- ORDENAR CADA PARTE SEPARADA

select(select top(1) city from station


where len(city)=(select min(len(city))from station)
order by city asc)
union
select(select top(1) city from station
where len(city)=(select max(len(city))from station)
order by city asc);

PARA ORDENAR A UNIAO DOS RESULTADOS

select top(1) city from station


where len(city)=(select min(len(city))from station)
union
select top(1) city from station
where len(city)=(select max(len(city))from station)
order by city asc;

------------------------------------------------------------------

SQL Self JOIN Example

SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City


FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;

------------------------------------------------------------------

SQL INNER JOIN Example

SELECT Orders.OrderID, Customers.CustomerName


FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
------------------------------------------------------------------

Union example

SELECT City, Country FROM Customers


WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;

-----------------------------------------------------------------

Intersect

SELECT CustomerKey
FROM FactInternetSales
INTERSECT
SELECT CustomerKey
FROM DimCustomer
WHERE DimCustomer.Gender = 'F'
ORDER BY CustomerKey;

----------------------------------------------------------------

EXCEPT

SELECT ProductID
FROM Production.WorkOrder
EXCEPT
SELECT ProductID
FROM Production.Product ;

Você também pode gostar