443 – Utilizzo non valido di un operatore con effetto collaterale ‘%1!’ nell’ambito di una funzione.

0
(0)

Messaggio

Codice: 2389

Messaggio in italiano: Utilizzo non valido di un operatore con effetto collaterale ‘%1!’ nell’ambito di una funzione.

Messaggio in inglese: Invalid use of a side-effecting operator ‘%s’ within a function.

Spiegazione

In una funzione non è possibile utilizzare dei comandi che possano modificare i dati all’interno del database.

Per esempio, non è possibile fare query di INSERT, UPDATE, DELETE, né è possibile creare tabelle, nemmeno temporanee. Resta comunque possibile creare variabili tabella in funzioni con valori di tabella con istruzioni multiple (multi-statement table-valued function).

Causa

Si è tentato di utilizzare comandi che modificano il database (operatore con effetto collaterale) all’interno di una funzione.

Esempio:

CREATE FUNCTION fa.FX_GetGlobalAccumulations
(
  @Domain NVARCHAR(200),
  @Workspace NVARCHAR(200)
)
RETURNS @ret TABLE (id INT)
AS
BEGIN
  EXEC('SELECT database_id FROM sys.databases')
RETURN 
END

Parametri

%1! rappresenta l’operatore che non è possibile eseguire dentro la funzione.

Soluzione

Rimuovere l’operatore con effetto collaterale, oppure valutare di usare una stored procedure al posto di una funzione.

Hai trovato utile questo contenuto?

Valutazione: 0 / 5. Voti: 0

Vota per primo questo contenuto

Ci dispiace che tu abbia trovato inutile o sbagliato questo contenuto

Lasciaci un messaggio

Come possiamo migliorare?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Moderazione dei commenti attiva. Il tuo commento non apparirà immediatamente.