Domanda

Ecco la mia definito dall'utente tipo di tabella ...

CREATE TYPE [dbo].[FooType] AS TABLE(
 [Bar] [INT],
)

Questo è ciò che Ive ha avuto a che fare nella mia funzione con valori di tabella per restituire il tipo:

CREATE FUNCTION [dbo].[GetFoos]
RETURN @FooTypes TABLE ([Bar] [INT])
INSERT INTO @FooTypes (1)
RETURN

In sostanza, im dover ri-dichiarare la mia definizione di tipo nella dichiarazione di ritorno della funzione. Isnt c'è un modo posso semplicemente dichiarare il tipo nella dichiarazione RETURN?

avrei pensato questo dovrebbe funzionare:

CREATE FUNCTION [dbo].[GetFoos]
RETURN @FooTypes [FooType]
INSERT INTO @FooTypes (1)
RETURN

Non riesci a trovare alcun aiuto su MSDN / Google riguardo a questa .... qualcuno?

Modifica

I non marcato la mia risposta, e urtando questa domanda -. Come sto incontrando lo stesso scenario 6 mesi più tardi

Qualcuno ha qualche idea se è possibile restituire un utente definito tipo di tabella da una funzione con valori di tabella? In caso contrario, c'è una soluzione migliore di diverso da ciò che ho fatto? (Ri-dichiarare ancora una volta il tipo).

È stato utile?

Soluzione 2

Ok - in modo che cant essere fatto.

Facile abbastanza per duplicare la definizione della tabella nel tipo di ritorno (con l'uso di scripting).

Ancora -. Speriamo che questo problema viene risolto nella prossima versione di SQL Server

Altri suggerimenti

Anche se non è possibile restituire l'UDTT da una funzione, è possibile restituire una variabile di tabella e riceverlo in un UDTT fino a quando la partita dello schema . Il seguente codice viene testato in SQL Server 2008 R2

- Creare l'UDTT

CREATE TYPE dbo.MyCustomUDDT AS TABLE
(
    FieldOne varchar (512),
    FieldTwo varchar(1024)
)

- dichiarare le variabili

DECLARE @uddt MyCustomUDDT;
DECLARE @Modifieduddt MyCustomUDDT;

// Chiamare la funzione

INSERT INTO @Modifieduddt SELECT * FROM dbo.MyUDF(@uddt);

firma Funzione

CREATE FUNCTION dbo.MyUDF(@localUDDT MyCustomUDDT)
RETURNS @tableVar TABLE
(
    FieldOne varchar (512),
    FieldTwo varchar(1024)
)
AS
BEGIN
 --Modify your variable here
RETURN
END

Speriamo che questo vi aiuterà qualcuno.

La sintassi per CREATE FUNCTION indica che l'unico modo per definire un tipo di tabella di ritorno è da colonne e tipi di sfogliare, un <table_type_definition>. Anche SQL Server "Denali" ha la stessa definizione di <table_type_definition>. Anche se stranamente, di sintassi non include valori di tabella funzioni multi-economico, o qualsiasi altra cosa che i riferimenti questo frammento.

Non credo che questo sia possibile. Non è possibile utilizzare un UDTT come tipo di ritorno di una funzione scalare con valori perché non è un valore scalare. Non è inoltre possibile sostituire la dichiarazione di tabella di una funzione con valori di tabella con un UDTT. Ripetendo la definizione della tabella sembra essere l'unica opzione. Se abbiamo capito il motivo per cui si stavano facendo questo, forse, siamo riusciti a trovare un'alternativa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top