syntaxe incorrecte: incluant les résultats de la procédure stockée dans l'instruction select

J'ai une procédure stockée qui fait cela …

CREATE PROCEDURE spGetRegion @postcode nvarchar(10) AS SELECT capt FROM REGION_DATA where POSTCODE = @postcode go 

Cela signifie que je peux courir

 exec spGetCounty @postcode = 'rh12' 

et il returnne une zone, comme "sud-est"

Est-il possible d'inclure les résultats d'une procédure stockée comme celle-ci dans une instruction select. par exemple

 SELECT FIRST_NAME , LAST_NAME , POSTCODE , << NEED TO INCLUDE RESULTS OF STORED PROCEDURE HERE PASSING IN POSTCODE FROM PEOPLE 

Donc quelque chose comme

 SELECT FIRST_NAME , LAST_NAME , POSTCODE , exec spGetCounty @postcode = 'rh12' << THIS BIT DOESN'T WORK !! FROM PEOPLE 

des idées?

Au lieu d'une procédure stockée, pensez à utiliser une fonction scalaire:

 CREATE FUNCTION spGetRegion ( @postcode nvarchar(10) ) RETURNS varchar(255) BEGIN DECLARE @capt varchar(255); SELECT @capt = capt FROM REGION_DATA where POSTCODE = @postcode; RETURN(@capt); END; 

Ensuite, vous pouvez l'appeler comme:

 SELECT FIRST_NAME, LAST_NAME, POSTCODE, dbo.spGetRegion('rh12'); FROM PEOPLE; 

Vous devez créer une fonction

 CREATE function spGetRegion ( @postcode nvarchar(10) ) RETURNS varchar(100) as begin SELECT capt FROM REGION_DATA where POSTCODE = @postcode end 

et utilisez-le dans votre requête comme

 SELECT FIRST_NAME , LAST_NAME , POSTCODE , dbo.spGetCounty('rh12') FROM PEOPLE 

Non, vous ne pouvez pas utiliser la procédure stockée dans une instruction select.

Vous devez utiliser la fonction fonction- scaler définie par l'user.

 CREATE FUNCTION [dbo].[ufnGetCounty] ( @postcode nvarchar(10) ) RETURNS VARCHAR(200) AS BEGIN DECLARE @capt VARCHAR(200) SELECT @capt = capt FROM REGION_DATA where POSTCODE = @postcode RETURN @capt END 

et puis vous pouvez l'utiliser dans une déclaration comme celle-ci –

 SELECT FIRST_NAME , LAST_NAME , POSTCODE , dbo.ufnGetCounty(postcode) FROM PEOPLE 

Utiliser la vue ou la fonction définie par l'user en se référant aux liens ci-dessous

en utilisant la vue, http://msdn.microsoft.com/en-us/library/aa258253%28SQL.80%29.aspx

en utilisant la fonction définie par l'user http://msdn.microsoft.com/en-us/library/aa175085%28SQL.80%29.aspx

Une procédure peut renvoyer plusieurs sets de résultats, chacun avec son propre schéma. Il ne convient pas à l'utilisation dans une instruction SELECT.

ou bien, essayez quelque chose comme ci-dessous

  SELECT * FROM OPENQUERY(YOURSERVERNAME, 'EXEC MyProc @parameters') WHERE somefield = anyvalue