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 ; |
优质生活从拆开始
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了