2016-12-06 3 views
1

Ich habe eine Prozedur, die als Argument den Funktionsnamen verwendet und dann den vollständigen Text der Funktion findet und in einer lokalen Variablen V_FullString speichert .Exportieren Sie das Ergebnis der gespeicherten Prozedur in Textdatei, da mein Computer als Client/Server arbeitet.

Ich brauche diese Ausgabe nicht im Bildschirm zu zeigen, anstatt es in Textdatei zu setzen.

Ist es möglich?

ALTER PROCEDURE [dbo].[SP_DictionaryFunction] 
    @P_FunctionName VARCHAR(100) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    DECLARE @V_ObjectName varchar(100) = @P_FunctionName; 
    DECLARE @V_FULLSTRING VARCHAR(5000) = '' 

    IF EXISTS (SELECT object_id FROM SYS.objects 
       WHERE object_id = OBJECT_ID(@V_ObjectName)) 
    BEGIN 
     DECLARE @V_TABLE TABLE (Line VARCHAR(500)) 

     INSERT INTO @V_TABLE 
      EXECUTE SP_HELPTEXT @V_ObjectName 

     SELECT @V_FULLSTRING = @V_FULLSTRING + Line 
     FROM @V_TABLE 

     PRINT @V_FULLSTRING 
    END 
END 
+0

Ist dies ein einmaliger Export? –

+0

Randnotiz: Sie sollten ** nicht ** das Präfix 'sp_' für Ihre gespeicherten Prozeduren verwenden. Microsoft hat [dieses Präfix für seine eigene Verwendung reserviert (siehe * Gespeicherte Prozeduren benennen *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx), und Sie riskieren irgendwann in der Zukunft einen Namenskonflikt. [Es ist auch schlecht für die Leistung Ihrer gespeicherten Prozedur] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Es ist am besten, einfach 'sp_' zu vermeiden und etwas anderes als Präfix zu verwenden - oder gar kein Präfix! –

+0

Das größte Problem hier ist wahrscheinlich der 'Print'; Viele Tools ignorieren "print" (oder: ignorieren sie standardmäßig, mit einer Option, um sie zu aktivieren). Wenn Sie 'select' anstelle von' print' verwenden, wird es wahrscheinlich ** einfach funktionieren **. –

Antwort

0

Eine Datei vom Server zu schreiben wäre eine sehr schlechte Idee. Im Idealfall würden Sie es beim Kunden schreiben. Also ... wie führst du SQL aus? Wenn dies SSMS ist, drücken Sie einfach ctrl + shift + f. Wenn Sie sqlcmd verwenden, sollte der Schalter -o {filename} funktionieren. Wenn Sie es über ADO.NET ausführen, dann File.WriteAllText. Andernfalls müssen Sie uns mitteilen, welches Client-Tool Sie verwenden.

Hinweis: Ich erwarte, dass das Hauptproblem, das Sie sehen, ist, dass print oft ignoriert wird. Möglicherweise bevorzugen Sie select, die alle Tools respektieren werden.

+0

Richtig war das Hauptproblem wegen der Druck .. Danke für Ihre Hilfe – DANAA

Verwandte Themen