SQL statico per la risoluzione dei problemi di DB2
In questo argomento vengono descritti gli errori comuni e gli errori di codifica che possono verificarsi quando si usa la funzionalità dei pacchetti statici di SQL per DB2 in Microsoft ADO.NET Provider for DB2 (provider di dati).
Errori comuni
Nella tabella seguente vengono descritti i possibili errori del server DB2 e le azioni che è necessario eseguire per correggerli.
SQLCODE | Azione |
---|---|
SQLCODE -104 (istruzione non valida) | - Convalidare e associare i dati allo schema del database. - Verificare che gli elementi del comando corrispondano allo schema del pacchetto. |
SQLCODE -204 (oggetto non trovato) | Verificare che i nomi di oggetto qualificati (quattro parti o alias). |
SQLCODE -440 (parametri non corretti) | Verificare che gli elementi del comando corrispondano allo schema del pacchetto. |
SQLCODE -501 (cursore non aperto) | Verificare che il comando includa CALL STATIC. |
SQLCODE -551 (privilegi insufficienti) | Verificare che siano impostati i privilegi per i pacchetti CREATE, BIND e EXECUTE. |
SQLCODE -601 (nome oggetto non univoco) | Verificare l'univocità della convenzione di denominazione. |
Errori comuni di codifica
Nella tabella seguente vengono descritti gli errori di codifica comuni in base all'area delle funzionalità.
Area | Descrizione |
---|---|
Documento XML | - Ogni parametro di input richiede un elemento di parametro. Ogni colonna di output richiede un elemento di colonna. - I nomi dei cursori devono essere univoci all'interno di un pacchetto. - Gli elementi non sono chiusi o non corrispondono. |
DB2 per il livello di isolamento IBM i | In HIS 2010 il livello di isolamento supportato è No Commit (NC), che deve essere specificato nel documento XML come "IsolationLevel="NoCommit. |
Sovrapposizione di stored procedure e alias | - La creazione del pacchetto avrà esito negativo quando il nome del pacchetto, il numero di sezione o l'alias del pacchetto non è univoco. - Se la creazione del pacchetto ha esito positivo, ma il nome dell'alias corrisponde a un nome di stored procedure, potrebbe verificarsi un errore di runtime, ad esempio SQLCODE -440 per parametri non validi. In alternativa, il server DB2 potrebbe restituire un set di risultati imprevisto. |
Nessun nome alias | - Se il file di metadati non contiene un nome alias, il client Microsoft esegue l'istruzione come stored procedure. - Se esiste una stored procedure con lo stesso nome, la stored procedure verrà eseguita e il programma potrebbe riscontrare risultati imprevisti. - Se non è presente alcuna stored procedure con lo stesso nome, il server di database restituirà un errore che indica che il nome dell'oggetto non è definito (SQLCODE -204). |