J'ai créé la procédure stockée suivante ..Initialiser une variable avec la sortie d'une procédure stockée dans MS SQL Server
CREATE PROCEDURE [dbo].[UDSPRBHPRIMBUSTYPESTARTUP]
(
@CODE CHAR(5)
, @DESC VARCHAR(255) OUTPUT
)
AS
DECLARE @SERVERNAME nvarchar(30)
DECLARE @DBASE nvarchar(30)
DECLARE @SQL nvarchar(2000)
SET @SERVERNAME =
Convert(nvarchar,
(SELECT spData FROM dbSpecificData WHERE spLookup = 'CMSSERVER'))
SET @DBASE =
Convert(nvarchar,
(SELECT spData FROM dbSpecificData WHERE spLookup = 'CMSDBNAME'))
SET @SQL =
'SELECT clnt_cat_desc FROM ' + @SERVERNAME +
'.' + @DBASE + '.dbo.hbl_clnt_cat WHERE inactive = ''N''
AND clnt_cat_code = ''' + @CODE + ''''
EXECUTE sp_executeSQL @SQL
RETURN
Cette procédure est utilisée dans de nombreuses bases de données différentes et de nombreux serveurs différents et est écrit aussi dynamique SQL pour simplifier la maintenance. La procédure fonctionne également sur un serveur différent de celui indiqué par la procédure.
Je veux utiliser la sortie de cette procédure comme une valeur dans une table ...
DECLARE @clid BIGINT
DECLARE @fileid BIGINT
DECLARE @myCode CHAR(5)
DECLARE @myDesc VARCHAR(255)
DECLARE @@tempDesc VARCHAR(255)
SET @clid = 1831400022
SET @fileid = 2072551358
SET @myCode =
(SELECT _clientPrimBusinessType FROM udbhextclient WHERE clid = @clid)
SET @myDesc =
EXEC UDSPRBHPRIMBUSTYPESTARTUP @CODE = @myCode, @DESC = @@tempDesc OUTPUT
----------------------------------------------------------------------------
SELECT
a.clid
, b.fileid
, c.usrfullname AS ClientPartner
, e.usrfullname AS ClientFeeEarner
, @myDesc AS ClientPrimaryBusinessType
FROM
dbclient a
INNER JOIN
dbFile b
ON
a.clid = b.clid
INNER JOIN
dbuser c
ON
a.feeusrid = c.usrid
INNER JOIN
udbhextclient d
ON
a.clid = d.clid
INNER JOIN
dbuser e
ON
d._ClientFeeEarner = e.usrid
WHERE
a.clid = @clid
AND b.fileid = @fileid
Je sais que c'est la syntaxe incorrecte, mais vous pouvez voir ce que je suis en train de réaliser cela sans recours aux tables temporaires car cela impliquerait une maintenance sur 30 serveurs différents avec 3 à 5 bases de données sur chacun.
Smink - Essayé votre solution et a obtenu les résultats suivants ...
Wow! Comment prononcez-vous ce nom: UDSPRBHPRIMBUSTYPESTARTUP – jop
Le progiciel a beaucoup de mises à jour. Le processus de mise à jour supprimera tout à moins qu'il suive la convention de dénomination ... UD - Défini par l'utilisateur, SPR - Procédure stockée, BH - Boodle Hatfield (employeur), PRIM - primaire BUS - Affaires TYPE - Type STARTUP - Démarrage Certains ont même une longueur maximale de 15 –
Réponse complétée ci-dessous. Regarde. –