Mostrando postagens com marcador query. Mostrar todas as postagens
Mostrando postagens com marcador query. Mostrar todas as postagens

quarta-feira, 22 de dezembro de 2010

Armazenando o select de uma Stored Procedure SQL

Para armazenar o select de uma stored procedure, no sql 2005 eh um pouco diferente.
precisa seguir alguns passos:

- precisa ter um linked server configurado.
- chamar a rotina que retornara o conteudo da proc.

configurando o linked server:


exec sp_addlinkedserver
@server = '[nome que vc dara ao link]',
@srvproduct = '',
@provider = 'SQLNCLI',--FICA ASSIM MESMO
@provstr = 'DRIVER={SQLServer};SERVER=[IP DO SEU SERVIDOR ONDE ESTA A SUA BASE];UID=[LOGIN];PWD=[SENHA];'
 
feito isso teremos o link configurado.
agora basta chamar a rotina assim:
 
 

select * from openquery([nome dado ao link],
'execute [Teste_RetornoProc])
 
com isso pode-se inserir o retorno em qualquer tabela, tanto temporaria ou variavel, ou mesmo tabela fisica.

Armazenando o retorno de uma Stored Procedure SQL

Esse eu perdi um tempinho procurando pois nao sabia como funcionava, mas achei um tutorial da microsoft e fiquei besta da facilidade:

Ex.
--proc exemplo
create procedure Teste_RetornaStatus
@contratoId as int
as begin
   select contratoStatus
   from contrato
   where contratoId = @contratoId
end

--executando a proc
declare @status as int

--armazenando o retorno da procedure (simples)
execute @status = Teste_RetornaStatus @contratoId = 12

pronto , o retorno esta na variavel @status.

sexta-feira, 17 de dezembro de 2010

UNION ALL vs UNION e ordenação

Se você sabe que não pode haver valores duplicados entre duas tabelas, então sempre use UNION ALL. Ele salva o banco de dados de realizar diversas triagens para ordenação dos seus dados.



Seu DBA não estará satisfeito com você se usar UNION desnecessariamente. É uma característica padrão do UNION realizar ordenação, mesmo sem a existência da opção de ORDER BY.

quinta-feira, 16 de dezembro de 2010

Transferindo registros de uma tabela para outra

para inserir dados de uma tabela para outra, seria assim:
INSERT INTO table1 (nome) SELECT nome FROM table2;