2017-01-23 4 views
-1

私は他のプロシージャの本体をとり、 をデバイスにローカルにテキストファイルとして保存するプロシージャを作成しています。変数の最大長に達したときに入力を分割する方法

大規模な手順を使用している場合を除き、正常に動作しますが、その場合は切り捨てられます。メモはnvarchar(max)を使用しています。 問題を解決するための提案はありますか?

これは、手順の一部である:

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 

答えて

0

255文字毎(定義が255文字を超える場合)の複数の行を返すsp_helptextを。

 SET @V_STRING='USE ['[email protected]_NewDB+']'; 

    SET @V_CheckType='USE '[email protected]_DataBase+'; select definition from sys.sql_modules where object_id = object_id('''[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) 


     SELECT @[email protected]_STRING+LINE + CHAR(10) + 'GO' FROM @V_Table 

     --SELECT @V_STRING 

     Execute SP_WriteToFile @V_PATH , @V_STRING 
+0

が、私は結果を変数に割り当てるときに問題が残って、それがカットされます。 ではなく、定義はその後、一列になり、はるかに簡単で動作するようにsys.sql_modulesまたはOBJECT_DEFINITIONを使用してみてくださいoff – DANAA

+0

@DANAAは答えに –

+0

@DANAAを実際に追加しました。SP_WriteToFileのパラメータの定義は何ですか?それがnvarchar(max)として宣言されていない場合は、そこで切り捨てられます。 –

関連する問題