Ich schreibe eine Prozedur, die den Körper anderer Verfahren und speichert sie lokal in meinem Gerät als Textdatei.Wie teilt man die Eingabe einer Variablen, wenn sie ihre maximale Länge erreicht
Es funktioniert korrekt, außer wenn ich eine große Prozedur verwende, in diesem Fall wird es abgeschnitten. Hinweis verwende nvarchar (max). Irgendwelche Vorschläge, um das Problem zu lösen?
Dieser Teil des Verfahrens ist:
DECLARE @V_STRING NVARCHAR(MAX)=''
DECLARE @V_Table TABLE (ID INT IDENTITY(1,1),LINE NVARCHAR(MAX))
IF @V_TYPE ='P'--PROCEDURES
BEGIN
SET @[email protected]_PATH+'4.PROCEDURES'
EXECUTE SP_CreateFolder @V_PATH,@P_DataBase
SET @V_TYPE='\CREATE PROCEDURES'+'.sql'
SET @V_STRING='USE ['[email protected]_NewDB+'];
GO
IF EXISTS (SELECT name from sys.objects where name='''[email protected]_ObjectName+''' AND TYPE=''P'')
BEGIN
DROP PROCEDURE ' [email protected]_ObjectName +'
END
GO'
END
SET @V_CheckType='USE '[email protected]_DataBase+'; EXECUTE SP_HELPTEXT '[email protected]_Objec [email protected]_object refer to the name of procedure and @P_DataBase refer to database which the procedure belong
INSERT INTO @V_Table (LINE)--get the body of given object and store in variable table by using sp_HELPTEXT dictionary
EXECUTE (@V_CheckType)
INSERT INTO @V_Table (LINE)
VALUES (' GO ')
SELECT @[email protected]_STRING+LINE FROM @V_Table
Execute SP_WriteToFile @V_PATH , @V_STRING --this procedure will create a text file in the path just created
Aber das Problem ist immer noch da, wenn ich das Ergebnis zuweisen auf die Variable wird es geschnitten werden aus – DANAA
@DANAA hinzugefügt, um die Antwort –
@ DANAA tatsächlich, etwas anderes zu überprüfen - was ist die Definition der Parameter in SP_WriteToFile? Wenn das nicht als nvarchar (max) deklariert ist, können Sie dort abgeschnitten werden. –