SQL Server - Procédure stockée SELECT FROM

J'ai une procédure stockée qui renvoie des lignes :

CREATE PROCEDURE MyProc
AS
BEGIN
    SELECT * FROM MyTable
END

Ma procédure actuelle est un peu plus compliquée, c'est pourquoi une sproc est nécessaire.

Est-il possible de sélectionner la sortie en appelant cette procédure ?

Quelque chose comme :

SELECT * FROM (EXEC MyProc) AS TEMP

J'ai besoin d'utiliser SELECT TOP X, ROW_NUMBER, et une clause WHERE supplémentaire pour paginer mes données, et je ne veux pas vraiment passer ces valeurs comme paramètres.

Vous pouvez

  1. créer une variable de table pour contenir le résultat de la procédure stockée et puis
  2. insérer la sortie de la sortie de la proc stockée dans la variable de table, et ensuite
  3. utiliser la variable de table exactement comme vous le feriez avec n'importe quelle autre table...

... sql ....

Declare @T Table ([column definitions here])
Insert @T Exec storedProcname params 
Select * from @T Where ...
Commentaires (3)

Vous voulez soit une [fonction évaluée par une table][1], soit insérer votre EXEC dans une table temporaire :

INSERT INTO #tab EXEC MyProc

[1] : http://www.sqlteam.com/article/intro-to-user-defined-functions-updated

Commentaires (1)

Il semble que vous deviez simplement utiliser une [vue][1]. Une vue permet de représenter une requête sous la forme d'une table afin que la vue puisse être interrogée.

[1] : http://msdn.microsoft.com/en-us/library/aa258253%28SQL.80%29.aspx

Commentaires (0)