jafm Posted February 13, 2013 at 03:43 PM Report #495143 Posted February 13, 2013 at 03:43 PM (edited) Olá Tenho um SP que me insere dados vindos de um txt... uso este SP várias vezes, que vai buscar informação a um txt Tenho já implementado nele um sistema de update, de forma a que ele atualize a informação. No entanto agora, verifiquei uma lacuna neste SP, que é a inexistência de apagar a informação que já não se encontra no txt. IF NOT EXISTS (SELECT ID FROM Artigo WHERE ID = @ID) INSERT INTO Artigo (ID, Nome, Descricao) VALUES (@ID,@Nome, @Descricao) ELSE UPDATE Artigo set Nome=@Nome, Descricao=@Descricao WHERE ID=@ID Como é que eu consigo fazer delete a informação existente na base dados mas que já não se encontra no ficheiro txt? Edited February 13, 2013 at 04:22 PM by Caça GeSHi
Caça Posted February 13, 2013 at 04:24 PM Report #495158 Posted February 13, 2013 at 04:24 PM Faz um delete simples, tipo DELETE FROM Artigo WHERE ID IN (1, 2, 3, ...) Pedro Martins Não respondo a duvidas por PM
jafm Posted February 13, 2013 at 04:46 PM Author Report #495160 Posted February 13, 2013 at 04:46 PM (edited) Não percebi esta parte IN (1, 2, 3, ...) coloquei da seguinte forma delete from Artigo where ID in (ID,Novo,Descricao) e não apaga os que os ficheiros txt que se encontram na bd que já não se encontram no txt Edited February 14, 2013 at 09:20 AM by Caça GeSHi
Caça Posted February 14, 2013 at 09:21 AM Report #495209 Posted February 14, 2013 at 09:21 AM (edited) Ai tens de colocar os IDs dos artigos que estão no txt DELETE FROM Artigo WHERE ID NOT IN (1, 2, 3, ...) Edited February 14, 2013 at 09:21 AM by Caça Pedro Martins Não respondo a duvidas por PM
jafm Posted February 14, 2013 at 09:28 AM Author Report #495211 Posted February 14, 2013 at 09:28 AM (edited) Mas eu não tenho acesso ao ids que deixaram de vir no txt, delete from Artigo where ID not in (ID) coloquei da seguinte forma e não apagou a informação que se encontrava no txt Edited February 14, 2013 at 09:37 AM by jafm
pmg Posted February 14, 2013 at 09:38 AM Report #495212 Posted February 14, 2013 at 09:38 AM Apaga todos os registos da tabela no principio da 'stored procedure' delete from artigo -- processa txt 1 Report What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Rui Carlos Posted February 14, 2013 at 10:10 AM Report #495215 Posted February 14, 2013 at 10:10 AM Também me parece que apagar tudo no início é a melhor opção, até porque depois deixas de precisar do if e dos updates (assumindo que não tens ids repetidos no mesmo txt). Rui Carlos Gonçalves
jafm Posted February 14, 2013 at 10:33 AM Author Report #495221 Posted February 14, 2013 at 10:33 AM (edited) Pois, mas não queria alterar muita a estrutura do SP. E também pensei melhor e optei por utilizar um sistema de updade as update Artigo set Estado=' ' IF NOT EXISTS (SELECT ID FROM Artigo WHERE ID = @ID) INSERT INTO Artigo (ID, Novo, Descricao, Estado) VALUES (@ID, @Novo ,@Descricao, 'A') ELSE UPDATE Artigo set Novo=@Novo,Descricao=@Descricao, Estado='A' WHERE ID=@ID Só que nesta query só me está a atualizar o ultimo registo:( Edited February 14, 2013 at 01:40 PM by jafm GeSHi
jafm Posted February 15, 2013 at 10:59 AM Author Report #495382 Posted February 15, 2013 at 10:59 AM ninguém me consegue, ajudar explicar a razão por apenas o ultimo registo aparecer com o Estado a 'A'? O UPDATE deveria estar noutro sitio?
pmg Posted February 15, 2013 at 02:04 PM Report #495413 Posted February 15, 2013 at 02:04 PM No teu query qual é o valor de @ID? De onde é que vem? What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
jafm Posted February 18, 2013 at 10:04 AM Author Report #495912 Posted February 18, 2013 at 10:04 AM Olá, Consegui resolver o problema, coloquei o UPDATE no código quando chamo o txt, em vez do SP
Rechousa Posted February 19, 2013 at 01:14 AM Report #496096 Posted February 19, 2013 at 01:14 AM Olá, Agora já está feito, pronto. Mas, ia sugerir-te a utilização do comando MERGE; Utilizando o MERGE com Table Valued Parameters, imagino que tivesses a solução ideal e com pouco código 😉 Se tiveres curiosidade, investiga um pouco sobre estas features. Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now