Utilizzo del supporto per le istruzioni preparate - Amazon Redshift

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à.

Utilizzo del supporto per le istruzioni preparate

Il driver JDBC di Amazon Redshift supporta le istruzioni preparate. È possibile utilizzare le istruzioni preparate per migliorare le prestazioni delle query con parametri che devono essere eseguite più volte durante la stessa connessione.

Una istruzione preparata è un'istruzione SQL compilata sul lato server ma che non viene eseguita immediatamente. L'istruzione compilata viene archiviata sul server come PreparedStatement oggetto fino alla chiusura dell'oggetto o della connessione. Mentre tale oggetto esiste, è possibile eseguire l'istruzione preparata tutte le volte necessarie utilizzando valori di parametro diversi senza dover compilare nuovamente l'istruzione. Questo sovraccarico ridotto consente di eseguire più rapidamente l'insieme di query.

Per ulteriori informazioni sulle istruzioni preparate, consultare "Utilizzo delle istruzioni preparate" nel tutorial Elementi essenziali di JDBC di Oracle.

È possibile preparare un'istruzione che contiene più query. Ad esempio, l'istruzione preparata seguente contiene due query INSERT:

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES (1, 'abc');");

Fare attenzione in quanto queste query non dipendono dai risultati di altre query specificate all'interno della stessa istruzione preparata. Poiché le query non vengono eseguite durante la fase di preparazione, i risultati non sono ancora stati restituiti e non sono disponibili per altre query nella stessa istruzione preparata.

Ad esempio, la seguente istruzione preparata, che crea una tabella e quindi inserisce valori nella tabella appena creata, non è consentita:

PreparedStatement pstmt = conn.prepareStatement("CREATE TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable VALUES (1, 'abc');");

Se si prova a preparare questa istruzione, il server restituisce un errore che indica che la tabella di destinazione (MyTable) non esiste ancora. La query CREATE deve essere eseguita prima che la query INSERT possa essere preparata.