Fórum Select na StoredProcedure #3363

06/03/2009

0

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

Responder

Posts

06/03/2009

Luiz Maia

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
Responder

Gostei + 0

06/03/2009

Régis Mello

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
Responder

Gostei + 0

07/03/2009

Luiz Maia

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
Responder

Gostei + 0

07/03/2009

Régis Mello

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.
Responder

Gostei + 0

08/03/2009

Luiz Maia

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
Responder

Gostei + 0

10/03/2009

Luiz Maia

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

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar