如何手动通过CRTSQLCI、CRTCMOD和CRTPGM创建SQL存储程序?
手动创建SQL存储过程的分步方法
针对你存储在QSQLSRC中的SQL存储过程代码,手动通过CRTSQLCI、CRTCMOD、CRTPGM命令完成创建的步骤如下:
1. 预编译SQL源生成ILE C模块源
执行CRTSQLCI命令,将SQL存储过程代码预编译为ILE C语言的模块源文件:
CRTSQLCI SRCFILE(MYLIB/QSQLSRC) SRCMBR(MYSQLPROCEDURE1) + OUTPUT(*MODULE) MODULE(MYLIB/MYQ001) + USRPRF(*OWNER) LANGID(*USRPRF) + SPECIFIC(MYQ001) DBGVIEW(*ALL)
参数说明:
SRCFILE/SRCMBR:指定你的SQL源文件和成员路径OUTPUT(*MODULE):指定输出为可编译模块而非直接生成程序MODULE:指定生成的模块名称,需与存储过程定义中的SPECIFIC MYQ001一致SPECIFIC:必须匹配存储过程定义里的特定名称DBGVIEW(*ALL):可选参数,用于后续调试
2. 编译ILE C模块生成目标模块
用CRTCMOD命令编译上一步生成的临时C源成员,生成可绑定的ILE模块:
CRTCMOD MODULE(MYLIB/MYQ001) SRCFILE(MYLIB/QSQLSRC) SRCMBR(QSQLTEMP1) + USRPRF(*OWNER) OPTION(*INCDIR) DBGVIEW(*ALL)
注意:QSQLTEMP1是CRTSQLCI自动生成的临时C源成员,默认存放在同一源文件中。
3. 绑定模块生成存储过程程序
最后用CRTPGM命令将模块绑定为可调用的存储过程程序:
CRTPGM PGM(MYLIB/MYQ001) MODULE(MYLIB/MYQ001) + USRPRF(*OWNER) BNDDIR(SQLUSR) DBGVIEW(*ALL)
参数说明:
BNDDIR(SQLUSR):必须绑定SQL系统绑定目录,否则存储过程无法正常调用- 若存储过程依赖其他自定义模块或服务,需额外添加对应
MODULE或BNDDIR参数
关键注意事项
- 所有命令中的库名(
MYLIB)需替换为你实际使用的库 - 确保你拥有操作源文件、库及相关命令的足够权限(至少*USE权限)
- 若预编译或编译报错,可在
CRTSQLCI命令中添加ERRFILE(MYLIB/QSQERRC)参数查看详细错误日志
内容的提问来源于stack exchange,提问作者jemrug
相关产品推荐
相关产品推荐

