View Full Version : Leitura de linhas numa storeprocedure Sql Server 2005


Galbne_PT
29-06-2006, 17:48
Boas ppl,

Gostaria de saber é possivel fazer o seguinte....
Ter uma store procedure k executa um select e o resultado desse select ser tratado na mm store procedure, dentro de um while, ou algo parecido...
A ideia é buscar dados a uma tabela, por cada linha de resultado inserir os dados numa outra tabela com umas alterações pelo meio :P

Eu keria mm k fosse td no mm store procedure, para poder fazer a transation e rollback no server e n no codigo do cliente!

Cumps,

Ps: Se for possivel podem indicar umas digas,tutorials, etc.. de como fazer! :002:

Parafuso
29-06-2006, 19:49
vê lá este exemplo, muito básico, somente para ficares com uma ideia:

/*
************************************************** ********
* Procedimento: spObterDadosSelect
* Descricao: Devolve as contas de um utilizador
* Inputs:
* Outputs:
************************************************** ********
*/

CREATE PROCEDURE [dbo].[spObterDadosSelect] @UserID varchar(256), @EmailUser varchar(256), @UtilizadorActivo bit AS
declare @existeUtilizadorActivo int
declare @maxID int
declare @ContasID varchar(20)

select @existeUtilizadorActivo = count(UserID)
from tblqueQuerias
where UserID = @UserID
and Activa <> 0

if @@ERROR <> 0 return 99

if @existeuTIlizadorActivO = 0
begin
-----------------------------------------------------------------------------------------------
-- Neste bloco de codigo deves colocar todas as alteracoes necessarias: insert/update/delete --
-----------------------------------------------------------------------------------------------
--ainda nao existe utilizador activo, pelo que temos de criar uma nova conta...
select @maxID = isnull(max(ContasID),0) + 1
from tblqueQuerias

insert into tblqueQueriass (ContasID, UserID, EmailUser, UtilizadorActivo)
values (@maxID, @UserID, null, @UtilizadorActivo)
end

select @ContasID = ContasID
from tblqueQuerias
where UserID = @UserID
and Activa <>0
and UtilizadorActivo = @UtilizadorActiva

select ContasID
from tblqueQuerias
where UserID = @UserID
and Activa <>0
and UtilizadorActivo = @UtilizadorActivo

if @@ERROR <> 0 return 99
else return @ContasID

GO

Galbne_PT
30-06-2006, 15:09
vê lá este exemplo, muito básico, somente para ficares com uma ideia:

/*
************************************************** ********
* Procedimento: spObterDadosSelect
* Descricao: Devolve as contas de um utilizador
* Inputs:
* Outputs:
************************************************** ********
*/

CREATE PROCEDURE [dbo].[spObterDadosSelect] @UserID varchar(256), @EmailUser varchar(256), @UtilizadorActivo bit AS
declare @existeUtilizadorActivo int
declare @maxID int
declare @ContasID varchar(20)

select @existeUtilizadorActivo = count(UserID)
from tblqueQuerias
where UserID = @UserID
and Activa <> 0

if @@ERROR <> 0 return 99

if @existeuTIlizadorActivO = 0
begin
-----------------------------------------------------------------------------------------------
-- Neste bloco de codigo deves colocar todas as alteracoes necessarias: insert/update/delete --
-----------------------------------------------------------------------------------------------
--ainda nao existe utilizador activo, pelo que temos de criar uma nova conta...
select @maxID = isnull(max(ContasID),0) + 1
from tblqueQuerias

insert into tblqueQueriass (ContasID, UserID, EmailUser, UtilizadorActivo)
values (@maxID, @UserID, null, @UtilizadorActivo)
end

select @ContasID = ContasID
from tblqueQuerias
where UserID = @UserID
and Activa <>0
and UtilizadorActivo = @UtilizadorActiva

select ContasID
from tblqueQuerias
where UserID = @UserID
and Activa <>0
and UtilizadorActivo = @UtilizadorActivo

if @@ERROR <> 0 return 99
else return @ContasID

GO

Esta a abrir-se uma luz no fim do tunel.... é bem pensado, n mt eficiente... desde k funcione :P


Thanks... desde-me algumas ideias só com esse exemplo..... vou já po-las em pratica....

Cumps.

XiriX
01-07-2006, 10:30
Boas ppl,

Gostaria de saber é possivel fazer o seguinte....
Ter uma store procedure k executa um select e o resultado desse select ser tratado na mm store procedure, dentro de um while, ou algo parecido...
A ideia é buscar dados a uma tabela, por cada linha de resultado inserir os dados numa outra tabela com umas alterações pelo meio :P

Eu keria mm k fosse td no mm store procedure, para poder fazer a transation e rollback no server e n no codigo do cliente!

Cumps,

Ps: Se for possivel podem indicar umas digas,tutorials, etc.. de como fazer! :002:

Usa Cursores. É como se fosse um RecordSet/DataReader em SQL.

Abs
X|r|X

Galbne_PT
03-07-2006, 12:42
Usa Cursores. É como se fosse um RecordSet/DataReader em SQL.

Abs
X|r|X

Boas,
É isso mm... claro.. como n me lembrei mais cedo! :lol:

Brigadao!