Initialisieren Sie Eine Variable Mit Dem Output An Eine Gespeicherte Prozedur In MS SQL Server

Erstellt habe ich die folgende gespeicherte Prozedur..

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

Dieses Verfahren wird in vielen verschiedenen Datenbanken und vielen verschiedenen Servern und ist so geschrieben, wie Sie dynamische SQL die Wartung zu vereinfachen. Das Verfahren läuft auch auf einem anderen server als die, die die Prozedur verweist.

Möchte ich die Ausgabe dieses Verfahren als einen Wert in einer Tabelle...

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

Ich weiß, das ist die falsche syntax, aber Sie können sehen, was ich bin versucht, dies zu erreichen, ohne Rückgriff auf temporäre Tabellen, da dies bedeuten würde Wartung über 30 verschiedenen Servern mit 3 zu 5 Datenbanken auf jedem.

Smink - habe Versucht, Ihre Lösung und erhielt die folgenden Ergebnisse...

Initialisieren Sie Eine Variable Mit Dem Output An Eine Gespeicherte Prozedur In MS SQL Server

Wow!!! Wie spricht man diesen Namen: UDSPRBHPRIMBUSTYPESTARTUP
Das Software-Paket hat viele updates. Der update-Vorgang wird alles gelöscht, es sei denn, es folgt der Namenskonvention... UD - Benutzer Definiert, SPR - Stored-Proc, BH - Boodle Hatfield(Chef),PRIM - Primär-BUS - Geschäfts-ART - Geben Sie START - Start-Up Einige haben sogar einen max char Länge von 15
Abgeschlossen Antwort unten. Werfen Sie einen Blick.
Bertrand :ich habe Ihre Nachricht., Ich werde es prüfen.
Bertrand : ich Danke Ihnen so sehr für Ihre Aufmerksamkeit. Großer Meister, diese änderung erhöht die Lesbarkeit des Codes. Natürlich ist dies meine Meinung. Jedoch, ich respektiere deine Meinung. Ich bin versucht, darauf Ihre Aufmerksamkeit.

InformationsquelleAutor Lord Future | 2008-10-10

Schreibe einen Kommentar