SAP:打印存储源代码

打印SAP存储过程、函数、视图源代码

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
-- SELECT count(1) FROM [SCSP]
USE [SBO-COMMON]
GO
/*
SELECT TOP 900 spname, dobefore, ServerType FROM [SCSP]
where 1=1 -- and spname like 'tmfn%' --'TmSp_UpgradeElectronicInvoiceMX' -- '_TmSp_ChangeColumnToNotNull'
 and spName+cast(ServerType as nvarchar(20))  in  (select s2.spName+ cast( max(s2.ServerType) as nvarchar(20))
  from scsp  s2 where 1=1 -- and  s2.spname like '_TmSp_ChangeColumnToNotNull'
   group by s2.spname )
order by spName
*/
GO
-- SQL-打印存储过程源码(未加密)
DECLARE C_SP CURSOR  FOR
 SELECT SCSP.spName AS STORE_PROCEDURE,
        N'未加密'  AS [IS_ENCRYPT],
        scsp.SpString AS [DEFINITION],
        DATALENGTH(SCSP.SPString) AS STRING_LONG
  FROM [SCSP]
 where 1=1 
  and spname like '_TmSp_CreateViewB1_AllDocumentsView%' ESCAPE '\' -- '_TmSp_ChangeColumnToNotNull'
 and spName+cast(ServerType as nvarchar(20))  in  (select s2.spName+ cast( max(s2.ServerType) as nvarchar(20))
  from scsp  s2 where 1=1 -- and  s2.spname like '_TmSp_ChangeColumnToNotNull'
   group by s2.spname )
 order by scsp.SpName ;
 
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;     

  

posted @   samrv  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示