Salve a tutti.
Vi riporto il mio dilemma:
Mi sono creato una UDF (chiamata dbo.Recordset) di tipo tabellare (RETURNS TABLE) che dato in input un determinato ID estrae da un altro database una serie di informazioni.
Adesso ho creato un'altra UDF (chiamata dbo.Controllo) che richiama sempre se stessa a meno che non sia valida una condizione: in tal caso richiama la dbo.Recordset.
Quando vado ad eseguire:
SELECT dbo.Controllo(52)
mi viene generato il seguente errore:
"Invalid object name 'dbo.Recordset'."
So che una UDF di tipo tabellare va richiamata con la sintassi:
SELECT * FROM dbo.Recordset(52)
Ho pensato (erroneamente) che nella mia UDF dbo.Controllo per richiamare la dbo.Recordset si dovesse scrivere:
1) RETURN dbo.Recordset(@ID)
oppure
2) RETURN SELECT * FROM dbo.Recordset(@ID)
Nel primo caso mi genera l'errore sopra detto in fase di esecuzione.
Nel secondo caso mi viene generato invece l'errore:
"return statements in scalar valued functions must include an argument"
Domande:
a) cosa si deve passare al comando RETURN per richiamare un'altra UDF di tipo tabellare? (con quelle scalari non ho problemi)
b) se la dbo.Recordset fosse scalare non avrei problemi, ma è possibile creare una funzione scalare che restituisca un recordset? Che valore di ritorno avrebbe?
c) potrei impostare anche la mia dbo.Controllo con valore di ritorno tabellare e fargli eseguire dei controlli usando senza problemi cursori e blocchi IF?
Non sono riuscito a rispondermi.
Qualcuno può aiutarmi?
Grazie,
Luigi.