Continuando, na sei porque gravou sem eu ter terminado, mas voltando, preciso fazer um select na tabela ProPlan, diretamente na procedure, assim, o sistema passa o IdProPlan e eu pesquiso na procedure qual o price, setup, OrderType. Além disso preciso pegar montar um campo Date e acrescentar mais um dia, ou seja, se recibo foi feito em 2009-03-06 , tenho que somar um dia a essa data e colocar a data gravada na tabela para 209-03-07, e também pegar o datetime direto na procedure, como eu faço isso, segue a procedure que eu tenho
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[SP_INSERT_ORDER]
(
@UserNum BIGINT,
@IdD BIGINT,
@IdI BIGINT,
@IdProPlan BIGINT,
@IdNumInvoice BIGINT,
@Points BIGINT,
@Price money,
@Setup money,
@DateDuo nchar(20),
@Pay nchar(2),
@DatePay nchar(20),
@Identifier nvarchar(100),
@License nvarchar(50),
@OrderType nchar(20),
@DateUpdate nchar(20),
@DateOrder datetime
)
AS BEGIN
Aqui consigui fazer uma pesquisa, mas 2 funcionou, como fazer? para pesquisar na tabela ProPlan os dados que eu preciso?
IF NOT EXISTS(SELECT 1 FROM CC_RELATIONSHIP WHERE IDNUM = @IDI)
BEGIN
SELECT 2 AS TIPO, 'REGISTRO NÃO ENCONTRADO NA TABELA CC_RELATIONSHIP.' AS MENSAGEM
END ELSE BEGIN
SELECT @IdI = IDI FROM CC_RELATIONSHIP WHERE IDNUM = @IDI
INSERT INTO cc_Order
(UserNum
,IdD
,IdI
,IdProPlan - Esse dado vem do formulário
,IdNumInvoice Esse dado é o último valor do campo retornado + 1, como fazer isso?
,Points - Esse dado preciso pesquisar na tabela ProPlan a partir do IdProPlan
,Price - Esse dado preciso pesquisar na tabela ProPlan a partir do IdProPlan
,Setup - Esse dado preciso pesquisar na tabela ProPlan a partir do IdProPlan
,DateDuo - esse dado é o dia da gravação + 1 dia
,Pay -
,DatePay
,Identifier
,License
,OrderType - Esse dado preciso pesquisar na tabela ProPlan a partir do IdProPlan
,DateUpdate
,DateOrder) - Esse dado é um datetime que tem que estar na procedure
VALUES
(@UserNum
,@IdD
,@IdI
,@IdProPlan
,@IdNumInvoice
,@Points
,@Price
,@Setup
,@DateDuo
,@Pay
,@DatePay
,@Identifier
,@License
,@OrderType
,@DateUpdate
,@DateOrder)
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
Continuando, depois de pesquisar os campos preciso somar , todos os valores, dividir por dados de outra tabela e gravar, como faço isso com storedprocedure?
07/03/2009
[devmedia .net]
Opa, blz Régis ?
Sinceramente não entendi o que deseja Régis,
está faltando você me passar alguma informação..
Bom, eu sempre peço aos usuários que façam um vídeo ou me explique a dúvida com detalhes,
pois tem coisas que para você que conhece o sistema ficam claras, mas para mim que não tenho nem noção do sistema que está fazendo ficam complicadas entender me impossibilitando de lhe ajudar...
Não vi nem sua tabela na procedure, nem os campos dela.
Pois, eu não consegui identificar sua dúvida, pois sua procedure pelo o que eu entendi não está completa.
Eu preciso ver em que está com dúvidas para que eu posso ajudá-lo.
Explique o que precisa , os passos para chegar nisso e me mostre onde está a sua dúvida extamente..
Outra dica , para retornar apenas um campo de select como o Id que precisa, você deve jogar para uma
variável
@VARIAVEL VARCHAR(10)
SELECT @VARIAVEL = CAMPO FROM TABELA
Estou lhe enviando abaixo algumas informações do Books Online do Sql sobre adição de data
GETDATE ( )
A função GETDATE retorna a data e a hora atuais do sistema. Podemos, no Query Analyzer , digitar o seguinte comando para obter a data e hora atuais:
SELECT GETDATE ( )
DATEPART ( unidade , data )
A função DATEPART retorna a parte especificada de uma data como um inteiro. Observe os exemplos:
SELECT DATEPART ( YEAR , '02/01/2004' )
Reposta: 2004
SELECT DATEPART ( MONTH , '02/01/2004' )
Reposta: 2
SELECT DATEPART ( DAY , '02/01/2004' )
Reposta: 1
DATEADD ( unidade , numero_unid,data )
A função DATEADD retorna uma nova data através da soma do número de unidades especificadas pelo valor unidade a uma data. Observe os exemplos:
SELECT DATEADD ( DAY ,6, '02/01/2004' )
Reposta: 2004-02-07
SELECT DATEADD ( MONTH ,6, '02/01/2004' )
Reposta: 2004-08-01
SELECT DATEADD ( YEAR ,6, '02/01/2004' )
Reposta: 2010-02-01
DATEDIFF ( unidade , data1,data2 )
A função DATEDIFF calcula a diferença entre as datas data2 e data1 , retornando o resultado como um inteiro, cuja unidade é definida pelo valor unidade . Observe os exemplos:
SELECT DATEDIFF ( DAY , '02/01/2004' , '05/25/2004' )
Reposta: 114 (dias)
SELECT DATEDIFF ( MONTH , '02/01/2004' , '05/25/2004' )
Reposta: 3(meses)
SELECT DATEDIFF ( YEAR , '02/01/2004' , '05/25/2006' )
Reposta: 2(anos)
Dessa forma, a expressão SQL que retorna o número de dias vivido por você até hoje é:
SELECT DATEDIFF(DAY, suadata, GETDATE())
onde suadata deve ser substituída pela sua data de nascimento.
Aguardo seu contato,
Grande Abraço
Carlos Jr
09/03/2009
[devmedia .net]
Oi Régis tudo bem ?
Estou aguardando seu retorno para que possamos dar continuidade ao seu chamado,
e lhe ajudar na solução da sua dúvida.
Abraços
Carlos Jr
como posso receber uma foto pelo WS e gravar na tabela? Tipo receber uma foto de um cliente e gravar num diretório do meu servidor e o caminho no Banco de dados, mas isso precisa ser feito no WS
Att
Regis
Régis,
o assunto do seu ultimo post é diferente do título do chamado, refere-se a dúvida de outro escopo.
Sugerimos que abra outro chamado.