SQL: 打印存储过程
打印SAP business one 9.2 存储过程代码
use SAPB1 -- SAP BUSINESS ONE 9.2
GO
DECLARE C_SP CURSOR FOR
SELECT OBJ.NAME AS STORE_PROCEDURE,
CASE WHEN RS.DEFINITION IS NULL THEN N'加密'
ELSE N'未加密' END AS [IS_ENCRYPT],
RS.DEFINITION ,
LEN( RS.definition) AS STRING_LONG
FROM SYS.all_objects OBJ,
SYS.ALL_SQL_MODULES RS
WHERE OBJ.object_id = RS.object_id
AND OBJ.type = 'P'
AND OBJ.name IN ('TmSp_UpgradeElectronicInvoiceMX')
order by obj.name ;
DECLARE @STORE_PROCEDURE NVARCHAR(128),
@IS_ENCRYPT NVARCHAR(20),
@DEFINITION NVARCHAR(MAX),
@STRING_LONG INT; -- 第4000字段一段;
declare @times int, -- 数
@i int ,
@j int ,
@start int;
BEGIN
-- SQL SERVER PRINT打印函数 每次最多只支持4000BYTE. 故打印前先对内容进行分段。
OPEN C_SP ;
FETCH NEXT FROM C_SP INTO @STORE_PROCEDURE, @IS_ENCRYPT, @DEFINITION,@string_long
WHILE @@FETCH_STATUS = 0
BEGIN
SET @times = CEILING(@STRING_LONG/4000.0);
set @i= 1;
IF @IS_ENCRYPT =N'未加密'
BEGIN
WHILE @i <=@times
begin
set @start = 1+ (@i-1)*4000.0;
print Substring(@definition,@start,4000.0)
set @i= @i+1;
end;
PRINT ''
print 'GO'+ CHAR(10)
END;
/*
begin
if @STRING_LONG>4000 and @STRING_LONG<8000
begin
print substring(@definition,1,4000)
print subString(@definition,4001,8000)
end
else
print @definition;
print 'GO'
end;
*/
FETCH NEXT FROM C_SP INTO @STORE_PROCEDURE, @IS_ENCRYPT, @DEFINITION,@string_long
END;
CLOSE C_SP;
DEALLOCATE C_SP;
END;
优质生活从拆开始