Procédure stockée SQL server retourner un tableau
J'ai une procédure stockée qui prend deux paramètres. Je peux l'exécuter avec succès dans Server Management Studio. Il me montre les résultats que j'attends. Toutefois, il renvoie une Valeur de Retour.
Il a ajouté cette ligne,
SELECT 'Return Value' = @return_value
Je voudrais la procédure stockée pour retourner la table, elle me montre des résultats pas la valeur de retour comme je suis à l'appel de cette procédure stockée à partir de MATLAB et tout ce qu'elle renvoie est vrai ou faux.
Ai-je besoin de préciser dans ma procédure stockée de ce qu'il devrait retourner? Si oui, comment dois-je spécifier un tableau de 4 colonnes de type varchar(10), float, float, float)?
Vous devez vous connecter pour publier un commentaire.
Une procédure ne peut pas retourner un tableau en tant que tel. Cependant, vous pouvez sélectionner à partir d'une table dans une procédure et directe dans un tableau (ou une variable de table) comme ceci:
INSERT-EXEC
ne peut pas être imbriquées à l'. Cette méthode peut également conduire à des problèmes avecROLLBACK TRANSACTION
. Voir cette source.Envisager de créer une fonction qui renvoie un tableau et être utilisé dans une requête.
https://msdn.microsoft.com/en-us/library/ms186755.aspx
La principale différence entre une fonction et une procédure est une fonction n'apporte aucun changement à n'importe quelle table. Il ne renvoie une valeur.
Dans cet exemple, je suis en création d'une requête de me donner le nombre de toutes les colonnes dans une table donnée, qui ne sont pas null ou vide.
Il y a probablement de nombreuses façons de nettoyer cette. Mais il illustre bien fonctionner.
Puis l'exécution de la fonction avec
produit un certain nombre de lignes comme:
Je le fais souvent en utilisant des Types de Table pour assurer plus de cohérence et de simplifier le code. Vous ne pouvez pas techniquement retour "a table", mais vous pouvez retourner un ensemble de résultats et à l'aide de
INSERT INTO .. EXEC ...
de la syntaxe, on peut clairement appeler un PROC et de stocker les résultats dans une table de type. Dans l'exemple suivant, je suis en train de passer d'une table dans un PROC avec un autre param-je besoin d'ajouter de la logique, alors je suis effectivement "le retour d'une table" et peuvent alors travailler avec que comme une variable de table.Le Statut de la Valeur retournée par une Procédure Stockée ne peut être qu'un type de données INT. Vous ne pouvez pas revenir à d'autres types de données dans l'instruction de RETOUR.
De Leçon 2: Conception Des Procédures Stockées:
Si vous voulez encore un tableau retourné à partir de la SP, vous devrez travailler le jeu d'enregistrements retournés à partir d'une sélection à l'intérieur de la SP ou la cravate dans une variable de SORTIE qui passe d'un type de données XML.
HTH,
Jean
Vous pouvez utiliser un paramètre de sortie au lieu de la valeur de retour si vous souhaitez à la fois un résultat et une valeur de retour
J'ai eu une situation similaire, et résolu à l'aide d'une table temporaire à l'intérieur de la procédure, avec les mêmes champs retournés par la Procédure Stockée:
insert into @T exec [master].dbo.sp_executesql @q
fetch next from @de données
dans @c@b
fin
fermer @data
désallouer @data
sélectionnez * à partir de @T
de retour
fin
Voici un exemple de SP que les deux renvoie un tableau et une valeur de retour. Je ne sais pas si vous avez besoin du retour de la "Valeur de Retour" et je n'ai aucune idée à propos de MATLAB et de ce qu'elle exige.