Array
(
)

Como fazer: Create Procedure temporaria?

Macario
   - 15 dez 2006

Olá.

Alguem ja fez uso ou tem conhecimento sobre este metodo?

Quais dicas, prós e contras?

Grato.

Psergio.p
   - 18 dez 2006

As procedures temporárias assim como as tabelas temporárias são vistas somente enquanto dura a conexão, ou seja quando a conexão é encerrada elas são removidas!
Não sei qual o seu objetivo más até só usei tabelas temporárias, procedures temporarias nunca usei!
Segue um exemplo:

CREATE PROCEDURE #SP_TESTE
AS
BEGIN
SELECT 1
END

Macario
   - 19 dez 2006

Olá psergio.p, bom dia colega.

Tenho a seguinte necessidade, mostrada nos exemplos abaixo:

#Código

create procedure NOTASPERIODO
(
 @PERIODOINI as datetime,
 @PERIODOFIN as datetime
)
as
begin
  select A.CODNOTA, A.CODCLI, B.NOMCLI, A.TOTNOTA from NOTAS A
  inner join CLIENTES B on (A.CODCLI = B.CODCLI)
  where A.DATA between @PERIODOINI and @PERIODOFIN
end


Nesta procedure faço uma simples instrução, onde a tabela NOTAS e CLIENTES encontram-se no mesmo Database.

Meu ´problema´ é a seguinte situação:

#Código
create procedure NOTASPERIODO
(
 @PERIODOINI as datetime,
 @PERIODOFIN as datetime
)
as
begin
  select A.CODNOTA, A.CODCLI, B.NOMCLI, A.TOTNOTA from BANCO1.dbo.NOTAS A
  inner join BANCO2.dbo.CLIENTES B on (A.CODCLI = B.CODCLI)
  where A.DATA between @PERIODOINI and @PERIODOFIN
end


Neste caso tenho os objetos em databases distintos.
Devido a esse motivo preciso montar as instruções em runtine, pois so assim sei onde cada tabela envolvida está (banco1 ou banco2).

1 - )Outro ponto, eu tendo 50 usuarios no mesmo sistema, terei problemas no SQL em estar criando muitas Sp´s temporarias?

2- ) Existe alguma outra maneira para solucionar o caso descrito?

Grato pela atenção 8)

Psergio.p
   - 19 dez 2006

Tudo bem com você?

Agora sim entendi seu problema. Deixa eu perguntar uma coisa: Você não poderia passar o nome do banco como parametro para a stored procedure e gerar a query dinamicamente? Se puder ser assim você só terá uma stored procedure! Aí eu te ajuda a monta-la.

Macario
   - 19 dez 2006

Por enquanto tudo tranquilo por aqui.

Então, no caso de montar a sp dinamicamente em determinados modulos faço uso deste recurso.

Há necessidade real envolve uma sp com cursor declarado, imagino eu que nesta situação já não seria tão facil ´cria-la´. Pois alem do cursor faço insert dentro de uma tabela temporaria via execute().

Infelizmente não posso postar o código da sp para um melhor entendimento.

Fiz um teste criando a sp temporaria executado sem erro algum, mas no momento de passar os parametros para os componentes de acesso ocorre o erro, no qual diz que (ja no primeiro ) parametro ´tal´ não foi encontrado.

Grato.

Psergio.p
   - 23 dez 2006

Sem o se código é dificil te dizer alguma coisa!