Select na StoredProcedure
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
Curtidas 0
Respostas
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
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
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
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
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
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
06/03/2009
Regis,
Sua dúvida foi sanada para este chamado?
Aguardo retorno.
Att
Luiz Maia
GOSTEI 0