-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
が、私は結果を変数に割り当てるときに問題が残って、それがカットされます。 ではなく、定義はその後、一列になり、はるかに簡単で動作するようにsys.sql_modulesまたはOBJECT_DEFINITIONを使用してみてくださいoff – DANAA
@DANAAは答えに –
@DANAAを実際に追加しました。SP_WriteToFileのパラメータの定義は何ですか?それがnvarchar(max)として宣言されていない場合は、そこで切り捨てられます。 –