Question

Voici mon type de table défini par l'utilisateur ...

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

C'est ce que ive dû faire dans ma fonction table d'une valeur de retour du type:

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

En fait, im avoir à re-déclarer ma définition de type dans la déclaration de retour de la fonction. Isnt il une façon que je peux simplement déclarer le type dans la déclaration de retour?

J'aurais pensé que cela fonctionnerait:

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

Vous ne trouvez pas une aide sur MSDN / Google au sujet de cette .... quelqu'un?

EDIT

Je non marqué ma réponse, et se cognant cette question -. Que je rencontre le même scénario 6 mois plus tard

Est-ce que quelqu'un a une idée s'il est possible de retourner un type de table défini par l'utilisateur d'une fonction d'une valeur de table? Sinon, est-il une meilleure solution autre que ce que je l'ai fait? (Re-déclarer à nouveau le type).

Était-ce utile?

La solution 2

Ok - donc il ne peut pas être fait.

est assez facile à dupliquer la définition de table dans le type de retour (avec l'utilisation de scripts).

Encore -. Nous espérons que cette question se rectifié dans la prochaine version de SQL Server

Autres conseils

Même si vous ne pouvez pas retourner le UDTT d'une fonction, vous pouvez retourner une variable de table et de recevoir dans un UDTT tant que le match de schéma . Le code suivant est testé dans SQL Server 2008 R2

- Créer le UDTT

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

- Déclarez vos variables

DECLARE @uddt MyCustomUDDT;
DECLARE @Modifieduddt MyCustomUDDT;

// Appel de la fonction

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

Signature Fonction

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

Si tout va bien ce que quelqu'un va de l'aide.

La syntaxe pour CREATE FUNCTION indique que la seule façon de définir un type de retour de la table est par des colonnes et types d'inscription, une <table_type_definition>. Même SQL Server "Denali" a la même définition pour <table_type_definition>. Bien étrangement, la syntaxe de ne comprend pas les fonctions de table multi-instruction, ou toute autre chose que les références faites ce fragment.

Je ne crois pas que ce soit possible. Vous ne pouvez pas utiliser un UDTT comme type de retour d'une fonction-Valued Scalar parce qu'il est pas une valeur scalaire. Vous ne pouvez pas remplacer également la déclaration de la table d'une fonction de valeur table avec un UDTT. En répétant la définition de table semble être la seule option. Si nous savions pourquoi vous faisiez cela, peut-être que nous pourrions trouver une alternative.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top