Utilizzo del supporto per le istruzioni preparate - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

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 memorizzata sul server come oggetto PreparedStatement fino a quando non si chiude l'oggetto o la 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.