2011-06-07 9 views
5

Sto usando il seguente codice in una procedura PL SQL:problema utilizzando 'esecuzione immediata' in procedura PL SQL

execute immediate 'select count(distinct item_type) into counter_variable 
from items where ' || field_name || ' is not null' 

Qui,

counter_variable è dichiarato nella sezione di dichiarazione della procedura field_name è il parametro IN per la procedura PL SQL ei valori passati saranno nomi di colonna dalla tabella 'articoli'

L'errore che ottengo è 'Istruzione SQL non valida' e non riesco a capire il motivo. Qualche idea?

Grazie

risposta

10

La clausola into è PL/SQL e non è valido per un'istruzione SQL. Prova:

execute immediate 'select count(distinct item_type) 
from items where ' || field_name || ' is not null' into counter_variable 
+3

Non dimenticare: se nome_campo è fornito da un utente, è necessario verificarlo per l'iniezione SQL. –

Problemi correlati