Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Mysql] Stored procedure clausola IN

    ciao ragazzi!

    in una stored procedure, dovrei eseguire una query del genere:
    codice:
    SELECT * FROM tabella
    WHERE anno = 2015 AND protocolli IN('V1', 'V8') AND destinazioni IN(118451, 190181, 113453)
    in pratica ho due clusole IN:
    -alla prima passo valore varchar
    -alla seconda valore int

    che tipo di parametri devo impostare nella stored procedure?

  2. #2
    in questi casi - per quanto ne so io - non c'è una soluzione semplice (ma magari con mySQL ci sono dei trucchi)

    l'unica è scrivere i dati che ti arrivano in due tabelle #temp e poi metterle in JOIN - e quindi non usi le IN

  3. #3
    Quote Originariamente inviata da optime Visualizza il messaggio
    in questi casi - per quanto ne so io - non c'è una soluzione semplice (ma magari con mySQL ci sono dei trucchi)

    l'unica è scrivere i dati che ti arrivano in due tabelle #temp e poi metterle in JOIN - e quindi non usi le IN
    uhm, capisco.
    in effetti non ho trovato granchè in giro.
    adesso vedo un attimo che soluzione trovo.
    intanto grazie!

  4. #4
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    Non è che mi sia proprio chiaro quale sia il problema.
    Dentro una stored puoi creare uno statement preparato (AHAHAHAHA ) per compilare il comando in modo "simile" a PHP
    codice:
    CREATE PROCEDURE boh(IN elencoprotocolli VARCHAR(255),elencodestinazioni VARCHAR(255) 
    ...
    SET @miaquery = CONCAT('SELECT * FROM tabella WHERE anno=2015 AND protocolli IN (', elencoprotocolli, ') AND destinazioni IN(',elencodestinazioni,')');
      PREPARE comando FROM @miaquery;
      EXECUTE comando;
      DEALLOCATE PREPARE comando;

  5. #5
    Quote Originariamente inviata da brancomat Visualizza il messaggio
    Non è che mi sia proprio chiaro quale sia il problema.
    Dentro una stored puoi creare uno statement preparato (AHAHAHAHA ) per compilare il comando in modo "simile" a PHP
    codice:
    CREATE PROCEDURE boh(IN elencoprotocolli VARCHAR(255),elencodestinazioni VARCHAR(255) 
    ...
    SET @miaquery = CONCAT('SELECT * FROM tabella WHERE anno=2015 AND protocolli IN (', elencoprotocolli, ') AND destinazioni IN(',elencodestinazioni,')');
      PREPARE comando FROM @miaquery;
      EXECUTE comando;
      DEALLOCATE PREPARE comando;
    eh si hai ragione, in effetti non ci avevo pensato a questa soluzione!
    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.