Eseguire query dinamiche

Può capitare di voler generare query dinamiche all'interno delle procedure NZPLSQL. Oppure, si possono avere procedure progettate per generare altre procedure. Per queste situazioni, NZPLSQL offre l'istruzione EXECUTE IMMEDIATE:
EXECUTE IMMEDIATE query-string

Il valore query-string è una stringa di tipo text che contiene la query da eseguire.

Quando si lavora con query dinamiche, assicurarsi di evitare le virgolette in NZPLSQL.

Una query eseguita da un'istruzione EXECUTE IMMEDIATE viene preparata ogni volta che l'istruzione viene eseguita. La stringa di query può essere creata dinamicamente all'interno della procedura per eseguire azioni su tabelle e campi diversi.

I risultati delle query SELECT vengono scartati da EXECUTE IMMEDIATE e SELECT INTO non è attualmente supportato da EXECUTE IMMEDIATE. Quindi, l'unico modo per estrarre un risultato da una SELECT creata dinamicamente è usare il metodo FOR ... EXECUTE, descritto in Iterare i record di una query.

Segue un esempio di dichiarazione:
EXECUTE IMMEDIATE 'UPDATE tbl SET'
|| quote_ident('fieldname')
|| ' = '
|| quote_literal('newvalue')
|| ' WHERE ...';

Questo esempio dimostra l'uso delle funzioni 'quote_ident e 'quote_literal. Per garantire che le stringhe vengano elaborate correttamente per le virgolette o i caratteri speciali, le espressioni che contengono identificatori di colonne e tabelle devono essere passate a 'quote_ident. Le espressioni contenenti valori che sono stringhe letterali nel comando costruito devono essere passate a 'quote_literal. Entrambi adottano le misure appropriate per restituire il testo immesso racchiuso tra doppie virgolette per " quote_ident o tra virgolette per " quote_literal, con tutti i caratteri speciali incorporati correttamente sfuggiti.