Ir para conteúdo
FabianoSouza

Ténica para gravar dados

Recommended Posts

Eu gostaria de contar com a experiência dos colegas para sanar a seguinte dúvida.

 

Estou em dúvida se crio procedures específicas para fazer INSERT e outra para fazer UPDATE no banco, ou se utilizo a mesma procedure para realizar as duas operações.

A dúvida é mais em relação a "técnica" ou "metodologia", do que codificação.

 

Penso que ter apenas 01 procedure que pode realizar as duas operações ajuda a manter certo padrão (já que as variáveis seriam as mesmas para as duas operações) e facilita a manutenção.

Porém, numa situação de UPDATE eu tenho um parâmetro adicional que é o ID do registro que vou querer atualizar. Na operação de INSERT não existe esse parâmetro (pq o registro ainda não existe no bd).

 

Então seria esse o meu dilema...saber dos colegas, qual abordagem faz mais sentido. Isso é importante porque tenho dezenas de procedures no meu projeto. Não me importo em fazer ajustes em todas, mas queria definir o melhor método (considerando o cenário acima citado) para implementar como padrão.

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe alguns pontos a considerar por exemplo:

  1. Separação de Responsabilidades
  2. Reutilização de Código
  3. Manutenção
  4. Desempenho
  5. Padronização
  6. Flexibilidade

mande o exemplo que voce esta fazendo usando sql server?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja um exemplo.

Nesse caso, estou deixando as duas operações na mesma procedure.

Esse é uma procedure das mais simples que tenho. Há algumas com uns 20 campos (e suas respectivas variáveis) para serem gravados.

Creio que entre 85% e 90% das procedures tem essa estrutura: recebe os vados, faz checagem para evitar duplicidade, executa a operação, define variáveis de mensagem ao usuário.

 

Nesse caso, eu trato a variável @id na aplicação para prever a situação de UPDATE (em que já tenho registro com ID) e a situação de INSERT, nesse caso eu passo o valor 0 (zero).

 

Como falei, não sei se essa é melhor maneira de reutilizar o código, padronizar e simplificar a manutenção.

USE [meu_bd]
GO
/****** Object:  StoredProcedure [dbo].[XPTO_gravar]    Script Date: 16/08/2023 12:13:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[XPTO_gravar] 

@codUsuario Int
, @id Int
, @trilha Varchar(80)
, @flagEnfoque Char(1)
, @cmd Char(9)
, @numIP Varchar(128)

AS
DECLARE @resMsg Varchar(80), @codMsg Int, @countCheck Int;

SET NOCOUNT ON

IF @cmd = 'atualizar'
BEGIN
--verifica se a Trilha existe
SELECT @countCheck = COUNT(*) FROM dbo.tab AS TA WHERE TA.titulo = @trilha AND TA.id <> @id

IF (@countCheck = 0) 
BEGIN
UPDATE dbo.tab 
SET titulo = @trilha, enfoque = @flagEnfoque
WHERE 
id = @id

SET @codMsg= 1
SET @resMsg = 'Trilha atualizada com sucesso.'
END

IF (@countCheck > 0)
BEGIN 
SET @codMsg = 2
SET @resMsg = 'Ops. Já existe a trilha ' + @trilha
END

END

ELSE


--***************************************************************************************
IF @cmd = 'adicionar'
BEGIN
--verifica se a NOVA Trilha existe
SELECT @countCheck = COUNT(*) FROM dbo.tab AS TA WHERE TA.titulo = @trilha

IF (@countCheck = 0) 
BEGIN
INSERT INTO dbo.tab 
(titulo)
VALUES
(@trilha)

SET @id = SCOPE_IDENTITY()
SET @codMsg= 1
SET @resMsg = 'Trilha criada com sucesso.'
END

IF (@countCheck > 0)
BEGIN 
SET @codMsg = 2
SET @resMsg = 'Ops. Já existe a trilha ' + @trilha
END


END

SET NOCOUNT OFF
SELECT dbo.fn_retornaRespOperacao(@codMsg, @resMsg, CAST(dbo.lpad(@id) AS Varchar)) AS jsonResp

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Kefatif
      Prezados, bom dia.
       
      Preciso da ajuda dos Srs!
       
      Não estou conseguindo localizar o erro no arquivo abaixo.
       
      Ao clicar no botão ele me envia a mensagem: "Erro ao registrar estoque !"
       
      Poderiam me ajudar?
       
      Agradeço desde já pela ajuda.
       
      <?php include_once 'autenticacao.php'; include_once'../../conexao.php'; include_once '../../funcoes.php'; include_once '../../decodepost.php'; if( !isset($_POST["cont"]) or !isset($_SESSION["cnes"]) ){ ECHO "Erro"; }else{ $cnes = $_SESSION["cnes"]; $idusuario = $_SESSION["idusuario"]; $cont = $_POST["cont"]; $sql = "insert into LESAO_ESTOQUE values(null,curdate(), '".$cnes."',".$idusuario.")"; if(mysqli_query($con, $sql)){ $idestoque = mysqli_insert_id($con); $coberturas = 0; for($i=1 ; $i<=$cont; $i++){ if(isset($_POST[$i])){ if($_POST[$i]<=0){ }else{ $qtd = $_POST[$i]; $sqlqtd = "insert into LESAO_REL_ESTOQUE_COBERTURAS values(".$idestoque.", ".$i.", ".$qtd.", ".$idusuario.")"; if(mysqli_query($con, $sqlqtd)){ $coberturas = $coberturas+1; } } } } $grav = "Registrado estoque de ".$coberturas." coberturas !"; }else{ $grav = "Erro ao registrar estoque !"; } //5- Fechar a conexão mysqli_close($con); ?> <script> alert('<?php echo $grav; ?>'); location.href="estoque-registrar.php"; </script> <?php } ?>  
    • Por Rrec
      Boa noite pessoal, estou com um problema em um script fantástico.
       
      Seguinte, quem quiser visualizar ele está aqui: https://www.radiorec.com.br/teste/
       
      A função do script é: O usuário seleciona a forma que vai querer gravar o áudio, .mp3, .wav ou .ogg.
      Ele clica em Record (é solicitada  permissão de gravar com o microfone);
      Aperta Stop, um player aparece com o áudio gravado para ele escutar e um link temporário para download.
       
      A questão é: Ao invés de gravar o microfone do usuário, eu gostaria de possibilitar o usuário gravar uma rádio stream que eu determinarei.
      No caso, acredito que eu tenha que substituir o "getUserMedia" pelo "link da stream", ou eu coloco tipo o player na mesma página tocando e peço pro script captar o audio que vem do player..
       
      Gente de verdade, tenho conhecimento básico, estou tentando fazer isso há uns dias, mas não acho nada que me ajude..
       
      Quem puder me ajudar ou dar uma luz para onde eu seguir.. muito obrigado, abçs..
       
      o código é:
       
      //webkitURL is deprecated but nevertheless URL = window.URL || window.webkitURL; var gumStream; //stream from getUserMedia() var recorder; //WebAudioRecorder object var input; //MediaStreamAudioSourceNode we'll be recording var encodingType; //holds selected encoding for resulting audio (file) var encodeAfterRecord = true; // when to encode // shim for AudioContext when it's not avb. var AudioContext = window.AudioContext || window.webkitAudioContext; var audioContext; //new audio context to help us record var encodingTypeSelect = document.getElementById("encodingTypeSelect"); var recordButton = document.getElementById("recordButton"); var stopButton = document.getElementById("stopButton"); //add events to those 2 buttons recordButton.addEventListener("click", startRecording); stopButton.addEventListener("click", stopRecording); function startRecording() { console.log("startRecording() called"); /* Simple constraints object, for more advanced features see https://addpipe.com/blog/audio-constraints-getusermedia/ */ var constraints = { audio: true, video:false } /* We're using the standard promise based getUserMedia() https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia */ navigator.mediaDevices.getUserMedia(constraints).then(function(stream) { __log("getUserMedia() success, stream created, initializing WebAudioRecorder..."); /* create an audio context after getUserMedia is called sampleRate might change after getUserMedia is called, like it does on macOS when recording through AirPods the sampleRate defaults to the one set in your OS for your playback device */ audioContext = new AudioContext(); //update the format document.getElementById("formats").innerHTML="Format: 2 channel "+encodingTypeSelect.options[encodingTypeSelect.selectedIndex].value+" @ "+audioContext.sampleRate/1000+"kHz" //assign to gumStream for later use gumStream = stream; /* use the stream */ input = audioContext.createMediaStreamSource(stream); //stop the input from playing back through the speakers //input.connect(audioContext.destination) //get the encoding encodingType = encodingTypeSelect.options[encodingTypeSelect.selectedIndex].value; //disable the encoding selector encodingTypeSelect.disabled = true; recorder = new WebAudioRecorder(input, { workerDir: "js/", // must end with slash encoding: encodingType, numChannels:2, //2 is the default, mp3 encoding supports only 2 onEncoderLoading: function(recorder, encoding) { // show "loading encoder..." display __log("Loading "+encoding+" encoder..."); }, onEncoderLoaded: function(recorder, encoding) { // hide "loading encoder..." display __log(encoding+" encoder loaded"); } }); recorder.onComplete = function(recorder, blob) { __log("Encoding complete"); createDownloadLink(blob,recorder.encoding); encodingTypeSelect.disabled = false; } recorder.setOptions({ timeLimit:120, encodeAfterRecord:encodeAfterRecord, ogg: {quality: 0.5}, mp3: {bitRate: 160} }); //start the recording process recorder.startRecording(); __log("Recording started"); }).catch(function(err) { //enable the record button if getUSerMedia() fails recordButton.disabled = false; stopButton.disabled = true; }); //disable the record button recordButton.disabled = true; stopButton.disabled = false; } function stopRecording() { console.log("stopRecording() called"); //stop microphone access gumStream.getAudioTracks()[0].stop(); //disable the stop button stopButton.disabled = true; recordButton.disabled = false; //tell the recorder to finish the recording (stop recording + encode the recorded audio) recorder.finishRecording(); __log('Recording stopped'); } function createDownloadLink(blob,encoding) { var url = URL.createObjectURL(blob); var au = document.createElement('audio'); var li = document.createElement('li'); var link = document.createElement('a'); //add controls to the <audio> element au.controls = true; au.src = url; //link the a element to the blob link.href = url; link.download = new Date().toISOString() + '.'+encoding; link.innerHTML = link.download; //add the new audio and a elements to the li element li.appendChild(au); li.appendChild(link); //add the li element to the ordered list recordingsList.appendChild(li); } //helper function function __log(e, data) { log.innerHTML += "\n" + e + " " + (data || ''); }  
    • Por Soares Menezes
      Boa noite, meu nome é Jorge e preciso de uma ajuda urgente, tenho um sistema que me gera arquivos em PDF ou Excel, e preciso extrair algumas informações desse arquivo PDF ou Excel gerado e salvá - los em uma base de dados mysql, pois estou desenvolvendo um sistema que pegará essas informações que foram gravadas no  BD extraídas desse PDF ou Excel e mostrar para o usuário de forma organizada dentro de um formulário. O sistema trará essas informações o para o usuário quando ela digitar o CPF. Alguém poderia me ajudar a retirar esses dados do PDF ou Excel e gravá - los no BD de forma organizada. segue em anexo o arquivo em excel. Se tiver como extrair do PDF seria melhor

    • Por Daniel A
      boa tarde a todos..... estou com dificuldade em montar esta parte do código ... e se alguém puder me ajudar agradeço !!!!!
       
      Vamos lá ..... no código abaixo estou lendo um csv e gravando no banco  ... até aí blz ... mas o que preciso!!!! ..... o código precisa consultar uma outra tabela (hotel) onde possui CNPJ e Nome  .... no CSV vem só o nome .....  preciso que ele puxe o CNPJ e grave tudo junto .........
       
      Segue meu código abaixo ....... Obrigado!!!!!
       
      nome das tabelas -> import   onde devem ser gravadas as informações completas
                                       -> hotel  consulta de nome e cnpj
       
       
      Váriavel de consulta (nome) ->  $descr  
      Váriavel que preciso preencher (CNPJ) -> $cnpj
       
      ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
       
      <HTML>
          <HEAD>
              <TITLE>Manipulação de Arquivos</TITLE>
          </HEAD>
          <BODY>
              
      <?php
          //conexão com o banco de dados
          $connection = new PDO("mysql:host=localhost;dbname=txdoc", "root", "");
          
          
          
         $arquivo = $_FILES["file"]["tmp_name"];
         $nome = $_FILES["file"]["name"];
         
         $ext = explode(".", $nome);
         
         $extensao = end($ext);
         
         if ($extensao != "csv"){
             
             echo "Extenção Inválida";
             
         }else {
             
             $objeto = fopen($arquivo,'r');
             
             $cabecalho = true;
                    
              while (($dados = fgetcsv($objeto, 10000, ";")) !== FALSE)
                  
                  {
                      
                      if ($cabecalho) {
                          $cabecalho = false;
                          continue;
                          
                      }    
                          
                          
                      $data            = utf8_encode($dados[0]);
                      $nome_port        = utf8_encode($dados[1]);
                      $num_func        = utf8_encode($dados[2]);
                      $num_cart        = utf8_encode($dados[3]);
                      $cont_mae        = utf8_encode($dados[4]);
                      $tip_trans        = utf8_encode($dados[5]);
                      $descr            = utf8_encode($dados[6]);
                      $cred_deb        = utf8_encode($dados[7]);
                      $nome_moeda        = utf8_encode($dados[8]);
                      $cod_moeda        = utf8_encode($dados[9]);
                      $r_estb            = utf8_encode($dados[10]);
                      $local            = utf8_encode($dados[11]);
                      $val_trans        = utf8_encode($dados[12]);
                      $val_dollar        = utf8_encode($dados[13]);
                      $nome_ciaaerea    = utf8_encode($dados[14]);
                      $nome_pass        = utf8_encode($dados[16]);
                      $bilhete1        = utf8_encode($dados[16]);
                      $bilhete2        = utf8_encode($dados[17]);
                      $bilhete3        = utf8_encode($dados[18]);
                      $bilhete4        = utf8_encode($dados[19]);
                      $cod_iata        = utf8_encode($dados[20]);
                      $c_custo        = utf8_encode($dados[21]);
                      $cnpj            = utf8_encode($dados[22]);
                      $val_reais        = utf8_encode($dados[23]);
                      
         /*         
              $rs = $connection->prepare("SELECT * FROM hotel where nome = $descr ");
            
              if($rs->execute())
            {
              $registro = $rs->fetch(PDO::FETCH_OBJ)
              
                echo "<TR>";
                echo "<TD>".$registro->cnpj."</TD>";
                echo "</TR>";
              
            }
            else
            {
             
            }
          
      */            
                      
                  $stmt = $connection->prepare("INSERT INTO import (data,nome_port,num_func,num_cart,cont_mae,tip_trans,descr,cred_deb,nome_moeda,cod_moeda,r_estb,local,val_trans,val_dollar,nome_ciaaerea,nome_pass,bilhete1,bilhete2,bilhete3,bilhete4,cod_iata,c_custo,cnpj,val_reais) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");            
                  
                  $stmt->bindParam(1, $data);
                  $stmt->bindParam(2, $nome_port);
                  $stmt->bindParam(3, $num_func);
                  $stmt->bindParam(4, $num_cart);
                  $stmt->bindParam(5, $cont_mae);
                  $stmt->bindParam(6, $tip_trans);
                  $stmt->bindParam(7, $descr);
                  $stmt->bindParam(8, $cred_deb);
                  $stmt->bindParam(9, $nome_moeda);
                  $stmt->bindParam(10, $cod_moeda);
                  $stmt->bindParam(11, $r_estb);
                  $stmt->bindParam(12, $local);
                  $stmt->bindParam(13, $val_trans);
                  $stmt->bindParam(14, $val_dollar);
                  $stmt->bindParam(15, $nome_ciaaerea);
                  $stmt->bindParam(16, $nome_pass);
                  $stmt->bindParam(17, $bilhete1);
                  $stmt->bindParam(18, $bilhete2);
                  $stmt->bindParam(19, $bilhete3);
                  $stmt->bindParam(20, $bilhete4);
                  $stmt->bindParam(21, $cod_iata);
                  $stmt->bindParam(22, $c_custo);
                  $stmt->bindParam(23, $cnpj);
                  $stmt->bindParam(24, $val_reais);
                  
                  
                  $stmt->execute();
                  }
             
             if($stmt){
                 
                 echo "Dados inseridos com sucesso!!!";
                 
             }else {
                 
                  echo "Erro !!!";
             }
             
             
             
         }
         
         
         
         
          
      ?>
              
          </BODY>
      </HTML>
    • Por RedHot66
      Pessoal, nao to conseguindo criar um código em C usando os conceitos de TAD para criar arquivos de Texto. Voces sabem algum exemplo ou tutorial bom pra seguir ?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.