为通用情况准备的存储过程
另外,我们为大多数的存储过程准备了一套运行环境,所准备的启动作业如下所示,其中NUMTCB可以根据系统资源情况来定,一般推荐可以设置为40或60。
清单4. 通用情况下存储过程对应的STC作业
//DB11WLM2 PROC APPLENV=DB11WLM2,DB2SSN=DSN,RGN=0K,NUMTCB=40 //IEFPROC exec PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT, // PARM=’&DB2SSN,&NUMTCB,&APPLENV’ //STEPLIB DD DISP=SHR,DSN=prefix.SCEERUN //* DD DISP=SHR,DSN=prefix.SDFHEXCI For CICS // DD DISP=SHR,DSN=prefix.SDSNEXIT // DD DISP=SHR,DSN=prefix.SDSNLOAD //* DD DISP=SHR,DSN=prefix.SCSQLOAD For MQ //* DD DISP=SHR,DSN=prefix.SCSQAUTH For MQ //* DD DISP=SHR,DSN=prefix.SCSQANLE For MQ //*SYSIN DD SYSOUT=* For Debugger and XML //*SYSPRINT DD SYSOUT=* //*WSERROR DD PATH=’/tmp/wsc.err’, For WEB_SERVICES //* PATHOPTS=(ORDWR,OCREAT,OAPPEND), //* PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP,SIROTH,SIWOTH) |
REXX语言编写的存储过程
对于由REXX语言写的存储过程来说,启动作业同其他类型的存储过程是不同的。见下面的例子。需要特别提出的是,REXX类型的存储过程的NUMTCB应该设为1。
清单5. REXX存储过程对应的STC作业
//DB11WLMR PROC APPLENV=DB11WLM_REXX,DB2SSN=DSN,RGN=0K,NUMTCB=1 //IEFPROC exec PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT, // DYNAMNBR=5, <== Allow for Dyn Allocs // PARM=’&DB2SSN,1,&APPLENV’ <== Use 1, not NUMTCB //* //NUMTCB@1 SET NUMTCB= <== Null NUMTCB symbol //* //* Include SDSNEXIT to use Secondary Authids (DSN3@ATH DSN3@SGN exits) //STEPLIB DD DISP=SHR,DSN=prefix.RUNLIB.LOAD // DD DISP=SHR,DSN=CBC!!.SCCNCMP <== C Compiler // DD DISP=SHR,DSN=prefix.SCEERUN <== LE runtime // DD DISP=SHR,DSN=prefix.SDSNEXIT // DD DISP=SHR,DSN=prefix.SDSNLOAD //SYSexec DD DISP=SHR,DSN=DSN!!0.SDSNCLST <== Location of DSNTPSMP //SYSTSPRT DD SYSOUT=* //CEEDUMP DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSABEND DD DUMMY //DSNTRACE DD SYSOUT=* //* //**** Data sets required by the SQL Procedures Processor //SQLDBRM DD DISP=SHR, <== DBRM Library // DSN=DSN!!0.DBRMLIB.DATA //SQLCSRC DD DISP=SHR, <== Generated C Source // DSN=DSN!!0.SRCLIB.DATA //SQLLMOD DD DISP=SHR, <== Application Loadlib // DSN=DSN!!0.RUNLIB.LOAD //SQLLIBC DD DISP=SHR, <== C header files // DSN=CEE!!.SCEEH.H // DD DISP=SHR, // DSN=CEE!!.SCEEH.SYS.H // DD DISP=SHR, <== Debug header file // DSN=DSN!!0.SDSNC.H //SQLLIBL DD DISP=SHR, <== Linkedit includes // DSN=CEE!!.SCEELKED // DD DISP=SHR, // DSN=DSN!!0.SDSNLOAD //SYSMSGS DD DISP=SHR, <== Prelinker msg file // DSN=CEE!!.SCEEMSGP(EDCPMSGE) //* //**** DSNTPSMP Configuration File – CFGTPSMP (optional) //* A site provided sequential dataset or member, used to //* define customized operation of DSNTPSMP in this APPLENV. //*CFGTPSMP DD DISP=SHR,DSN= //* //**** Workfiles required by the SQL Procedures Processor //SQLSRC DD UNIT=SYSALLDA,SPACE=(23440,(20,20)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440) //SQLPRINT DD UNIT=SYSALLDA,SPACE=(23476,(20,20)), // DCB=(RECFM=VB,LRECL=137,BLKSIZE=23476) //SQLTERM DD UNIT=SYSALLDA,SPACE=(23476,(20,20)), // DCB=(RECFM=VB,LRECL=137,BLKSIZE=23476) //SQLOUT DD UNIT=SYSALLDA,SPACE=(23476,(20,20)), // DCB=(RECFM=VB,LRECL=137,BLKSIZE=23476) //SQLCPRT DD UNIT=SYSALLDA,SPACE=(23476,(20,20)), // DCB=(RECFM=VB,LRECL=137,BLKSIZE=23476) //SQLUT1 DD UNIT=SYSALLDA,SPACE=(23440,(20,20)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440) //SQLUT2 DD UNIT=SYSALLDA,SPACE=(23440,(20,20)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440) //SQLCIN DD UNIT=SYSALLDA,SPACE=(32000,(20,20)) //SQLLIN DD UNIT=SYSALLDA,SPACE=(3200,(30,30)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200) //SQLDUMMY DD DUMMY //SYSMOD DD UNIT=SYSALLDA,SPACE=(23440,(20,20)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440) |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
TT百科:存储过程
存储的过程可以访问或修改数据库中的数据,但并不绑定到特定的数据库或对象,这提供了许多优点。
-
在Oracle数据库的自定义函数中调用存储过程
在Oracle数据库的自定义函数中调用存储过程是否可行,Oracle专家Brian Peasland给出了具体的解答。
-
数据库工程师2012年3月刊:数据库2012
数据库的2012,不是末日而是新生。传统厂商纷纷发布大版本更新的数据库产品,开源技术更加强势,2012的精彩始于《数据库工程师》……
-
解读SQL Server数据库存储过程发展历史
SQL Server存储过程可以是Transact-SQL(T-SQL)语句,或者是.NET框架的公共语言运行时(CLR),它是专为方便数据库查询而设计的。