Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    34

    USER DEFINED FUNCTIONS: problema return

    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.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Siccome nessuno qui ha la sfera di cristallo, ci piacerebbe sapere anche di cosa si tratta:

    Hai un linguaggio di programmazione? Se così andrebbe specificato nel titolo
    Se si tratta di un DBMS (credo che sia questo il caso) dovresti specificare (almeno nel titolo!!) di che DBMS si tratta.

    Si tratta di codice VBA? In questo caso, non solo non l'hai specificato, ma saresti anche nella sezione sbagliata.


    Insomma... un po' di informazioni sono indispensabili.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    34
    Scusami, hai perfettamente ragione.
    Ero convinto di aver letto SQL SERVER e invece no.

    Si tratta di una UDF scritta su SQL SERVER 2000.
    Non è codice VBA ma semplice T-SQL.

    Se può bastare spero di ricevere un aiuto.
    Grazie e scusate ancora la dimenticanza.

    Luigi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.