Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Usa interrogazioni parametrizzate
È possibile utilizzare le query con parametri Athena per rieseguire la stessa query con valori di parametro diversi in fase di esecuzione e aiutare a prevenire gli attacchi di iniezione. SQL In Athena, le interrogazioni con parametri possono assumere la forma di parametri di esecuzione in qualsiasi DML interrogazione o istruzione preparata. SQL
-
Le query con parametri di esecuzione possono essere eseguite in un unico passaggio e non sono specifiche del gruppo di lavoro. È possibile inserire punti interrogativi in qualsiasi DML query per i valori che si desidera parametrizzare. Quando si esegue la query, si dichiarano i valori dei parametri di esecuzione in sequenza. La dichiarazione dei parametri e l'assegnazione dei valori per i parametri possono essere eseguite nella stessa query, ma in modo disaccoppiato. A differenza delle istruzioni preparate, è possibile selezionare il gruppo di lavoro quando si invia una query con parametri di esecuzione.
-
Le istruzioni preparate richiedono due SQL istruzioni separate:
PREPARE
e.EXECUTE
In primo luogo, è necessario definire i parametri nel campo dell’istruzionePREPARE
. Quindi, viene eseguita un’istruzioneEXECUTE
che fornisce i valori dei parametri definiti. Le istruzioni preparate sono specifiche del gruppo di lavoro; non è possibile eseguirle al di fuori del contesto del gruppo di lavoro a cui appartengono.
Considerazioni e limitazioni
-
Le query parametrizzate sono supportate nella versione 2 del motore Athena e versioni successive. Per ulteriori informazioni sulle versioni del motore Athena, consulta Controllo delle versioni del motore di Athena.
-
Attualmente, le query con parametri sono supportate solo per le istruzioni
SELECT
,INSERT INTO
,CTAS
eUNLOAD
. -
Nelle query con parametri, i parametri sono posizionali e sono indicati da
?
. Ai parametri vengono assegnati valori in base al loro ordine nella query. I parametri nominati non sono supportati. -
Attualmente, i parametri
?
possono essere inseriti solo nella clausolaWHERE
. Sintassi comeSELECT ? FROM table
non è supportata. -
I parametri del punto interrogativo non possono essere inseriti tra virgolette doppie o singole (ovvero,
'?'
e"?"
non sono una sintassi valida). -
SQLAffinché i parametri di esecuzione vengano trattati come stringhe, devono essere racchiusi tra virgolette singole anziché tra virgolette doppie.
-
Se necessario, puoi utilizzare la funzione
CAST
quando immetti un valore per un termine parametrizzato. Ad esempio, se hai una colonna del tipodate
che è stata parametrizzata in una query e vuoi eseguire una query per la data2014-07-05
, l'immissioneCAST('2014-07-05' AS DATE)
del valore del parametro restituirà il risultato. -
Le istruzioni preparate sono specifiche del gruppo di lavoro e i nomi delle istruzioni preparate devono essere univoci all'interno del gruppo di lavoro.
-
IAMsono richieste le autorizzazioni per le istruzioni preparate. Per ulteriori informazioni, consulta Configurare l'accesso alle dichiarazioni preparate.
-
Le query con parametri di esecuzione nella console Athena sono limitate a un massimo di 25 punti interrogativi.