|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
Bonjour,
Je voudrais faire un select imbriqué mais pour des raisons de modularité le faire en faisant une procédure stockée qui fait un select avec comme paramètre le tableau de résultat de l'appel d'une seconde procédure stockée appelée dans cette première. en gros j'aurais une procédure 1 appelée par la procédure 2 la procédure 1 renverrait un tableau de int : Code :
Code :
Merci à l'avance |
||||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Plutôt que de faire une procédure faite une fonction table.
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#3 | ||||||||
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
Merci bien, maintenant que j'utilise une fonction table,
quand j'essaie d'appeler une procédure qui appelle une fonction table multiselect pour faire la même chose j'ai ce message d'erreur: Msg*4121, Niveau*16, État*1, Procédure*La_Procedure, Ligne*7 Impossible de trouver la colonne "dbo" la fonction définie par l'utilisateur ou l'agrégat "dbo.IdList". Le nom pourrait également être ambigu. que je mette "[La_Procedure]" , "[dbo].[La_Procedure]" ou "[Work].[dbo].[La_Procedure]" avec ou sans crochets code généré par clic droit exécuter la procédure (SQLServer2008R2): Code :
Code :
la fonction table: Code :
Code :
|
||||||||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Bonjour,
Cela m'a l'air bien compliqué. J'ai donc publié une fonction de table en ligne (plus performant qu'une fonction de table multi-instructions) qui permet d'obtenir l'ensemble des valeurs d'une chaîne contenant des valeurs séparées par des virgules. Comme c'est une fonction table, comme la vôtre, vous pouvez donc écrire une jointure dessus. D'autre part vous pouvez aussi utiliser l'opérateur APPLY avec une fonction table, ce qui permet de grouper les tables dans la clause FROM, mais ça, ce n'est pas réellement nécessaire. @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
Merci, pour info mais la fonction table que je propose, avec un paramètre unique, me retourne un jeu d’enregistrement, son but est de constituer la deuxième partie de la requête imbriquée.
Je ne comprends tout simplement pas pourquoi j’ai affichage de : Impossible de trouver la colonne "dbo" la fonction définie par l'utilisateur ou l'agrégat "dbo.IdList" vers, me semble-il , la ligne : Code :
Merci tout de même pour ta fonction je cherchait par ailleur justement aussit comment passer une liste ou un tableau |
||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Si je reviens à la première procédure stockée que vous avez donné, je pense qu'il va falloir que vous utilisiez du T-SQL dynamique.
C'est à dire que vous construisez la chaîne de requête dans une variable de type nvarchar, que vous passez en paramètre à la procédure stockée système sp_executesql, comme je l'ai montré ici et ici @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
Honte a moi!
Code :
![]()
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com