Eseguire query dinamiche
EXECUTE IMMEDIATE query-stringIl 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.
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.