SQL: 打印存储过程

打印SAP business one  9.2  存储过程代码 

 

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
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;      

  

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