Select na StoredProcedure

06/03/2009

Preciso fazer um select para pegar alguns dados de outra tabela, consigo fazer de uma tabela, mas não consigo fazer para duas tabelas.....   O que eu preciso fazer é uma storedprocedure que pegue o IdProPlan, pesquise na tabela ProPlan qual o
Régis Mello

Régis Mello

Curtidas 0

Respostas

Luiz Maia

Luiz Maia

06/03/2009

Regis,   Por favor, complete sua dúvida, mas desde já te adianto em exemplo de SP do qual faz select em mais de uma tabela.   Estou aguardando...     CREATE PROCEDURE teste_regis   @varivale_teste   varchar(15)
AS
   SELECT       a.campo1,       b.campo1    FROM       tabela a            inner join tabela b on b.id = a.id    WHERE       OqueVoceQuer = @variavel_teste     Lembrando que o criterio de junção depende do que vc precisa, pode ser inner, left, right, outer join.   Abraços Att Luiz Maia
GOSTEI 0
Régis Mello

Régis Mello

06/03/2009

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[SP_INSERT_ORDER] ( @UserNum BIGINT, @IdProPlan BIGINT, --@IdD BIGINT, --@IdI BIGINT, --@IdNumInvoice BIGINT, --@Points BIGINT, --@Price money, --@Setup money, @DateDuo nchar(20), // Preciso pegar a data da inserção sem a hora e acrescentar + 1 dia no vencimento, ou seja se a inserção ocorreu no dia 2009-03-29 a data de vencimento deverá ser 2009-03-30 , claro que tem que ter uma regra de  segurança para não aplicar dia 32 por exemplo. Como faço? --@Pay nchar(2), @DatePay nchar(20), @Identifier nvarchar(100), @License nvarchar(50), --@OrderType nchar(20), @DateUpdate nchar(20)  // Preciso pegar a data yyyy-mm-dd , acrescentar 1 mes no mm , ou seja, se a data da inserção for 2009-03-30 a DateUpdate deverá ser 2009-04-30, claro que precisa evitar que tenha o mês 13 por exemplo, como faço?   --@DateOrder datetime ) AS BEGIN DECLARE @IDI bigint DECLARE @IDD bigint DECLARE @PRICE money DECLARE @POINTS bigint DECLARE @SETUP money DECLARE @ORDERTYPE char(1) DECLARE @IDNUMINVOICE bigint DECLARE @IDPLAND int DECLARE @IDPLANI int DECLARE @PointsD int DECLARE @PointsI int DECLARE @DATEORDER datetime  // Preciso pegar a data e hora da inserção , mas retorna sempre Null IF NOT EXISTS(SELECT 1 FROM cc_UserIdentifier WHERE IDENTIFIER = @Identifier) BEGIN SELECT 2 AS TIPO, 'REGISTRO NÃO ENCONTRADO NA TABELA DE PARCEIROS COMERCIAIS.' AS MENSAGEM END IF NOT EXISTS(SELECT 1 FROM cc_Relationship WHERE IDNUM = @UserNum) BEGIN SELECT 2 AS TIPO, 'REGISTRO NÃO ENCONTRADO NA TABELA DE RELACIONAMENTOS.' AS MENSAGEM END ELSE BEGIN SELECT @IdD = IDD, @IdI = IDI FROM cc_Relationship WHERE IDNUM = @UserNum   IF NOT EXISTS(SELECT 1 FROM cc_ProPlan WHERE IDPRO = @IdProPlan) BEGIN SELECT 2 AS TIPO, 'REGISTRO NÃO ENCONTRADO NA TABELA DE PRODUTOS.' AS MENSAGEM END ELSE BEGIN SELECT @Price = PRICEPRODUCT, @Points = POINTSPURCHASE, @Setup = PRICESETUP, @OrderType = STANDART FROM cc_ProPlan WHERE IDPRO = @IdProPlan BEGIN SELECT @IdNumInvoice = MAX(IDNUMINVOICE) FROM CC_ORDER   BEGIN SELECT @PointsD = IdPlan FROM cc_RelationShip WHERE IdNum = @IdD SELECT @IdPlanI = @IDPLANI FROM cc_RelationShip WHERE IdNum = @IdI INSERT INTO cc_Order (UserNum ,IdD ,IdI ,IdProPlan ,IdNumInvoice ,Points ,PointsD ,PointsI ,Price ,Setup ,DateDuo ,Pay ,DatePay ,Identifier ,License ,OrderType ,DateUpdate ,DateOrder) VALUES (@UserNum ,@IdD ,@IdI ,@IdProPlan ,@IdNumInvoice ,@Points ,@PointsD ,@PointsI ,@Price ,@Setup ,@DateDuo ,'F' ,@DatePay ,@Identifier ,@License ,@OrderType ,@DateUpdate ,DateTime.Now()) IF (@@ROWCOUNT = 0) BEGIN SELECT 2 AS TIPO, 'REGISTRO NÃO ENCONTRADO.' AS MENSAGEM END ELSE BEGIN SELECT 1 AS TIPO, 'INSERIDO COM SUCESSO.' AS MENSAGEM END END END END END END
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Ola Regis,   Para retornar a data atual no SQL vc deve usar o getDate().   Por exemplo:   select getdate();   Para fazer as somas de dias, meses e anos, uise as seguintes funções, as mesmas ja tratam 32 dias, 12 meses e anos.   select dateadd(day, 1, getdate()) from arquivo select dateadd(month, 3, getdate()) from arquivo select dateadd(year, 4, getdate()) from arquivo onde: day, month e year são os valores que quero adicionar. 1, 2 e 4, são a quantidade de dias, meses e anos adicionados, respectivamente. getDate() retorna a data atual do sistema.   Abraços Espero ter ajudado Att Luiz Maia
GOSTEI 0
Régis Mello

Régis Mello

06/03/2009

E a outra pergunta? Como faço para somar dados vindos de uma consulta em uma stored procedure? Preciso somar todas as compras feitas em uma determinada data e gravar em outra tabela.
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Regis,   Para somar dados em uma coluna de tabela vc deve usar o recurso SUM. Por exemplo:   select sum(precos_produtos) as total_precos_produtos from produtos where data_compra = getDate().   Abraços   Att Luiz Maia
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Regis,   Sua dúvida foi sanada para este chamado? Aguardo retorno.   Att Luiz Maia
GOSTEI 0
POSTAR