sql-scripts - IBM i Access Client Solutions (ACS) 运行 SQL 脚本 - 打印变量
问题描述
是否有一种简单的方法可以在 IBM i ACS 运行 SQL 脚本屏幕的输出上显示/打印变量?
为了在编写脚本时进行快速检查,能够显示变量的内容将非常有帮助。例如在下面的脚本中,我想知道“my_counter”的值。
BEGIN
DECLARE my_counter INT;
SET my_counter = my_counter + (SELECT count(*) FROM QSYS2.OBJECT_LOCK_INFO WHERE SYSTEM_OBJECT_SCHEMA = 'ABC' AND SYSTEM_OBJECT_NAME = 'DEF' AND OBJECT_TYPE = '*FILE');
SET my_counter = my_counter + (SELECT count(*) FROM QSYS2.OBJECT_LOCK_INFO WHERE SYSTEM_OBJECT_SCHEMA = 'ABC' AND SYSTEM_OBJECT_NAME = 'XYZ' AND OBJECT_TYPE = '*FILE');
PRINT my_counter; --> I want to print the content of variable my_counter but PRINT is not a valid keyword (all other valid keywords have a blue color, this one does not).
END;
您可能还注意到我正在做“my_counter = my_counter + ...”,我尝试使用“my_counter += ...”但没有这样的事情。有没有更好的方法来做到这一点?
解决方案
你好科恩斯,
这就是我这样做的方式:
create or replace variable @my_Counter integer default 0;
SET @my_counter = @my_counter + (SELECT count(*) FROM QSYS2.OBJECT_LOCK_INFO WHERE SYSTEM_OBJECT_SCHEMA = 'ABC' AND SYSTEM_OBJECT_NAME = 'ABC' AND OBJECT_TYPE = '*FILE');
SET @my_counter = @my_counter + (SELECT count(*) FROM QSYS2.OBJECT_LOCK_INFO WHERE SYSTEM_OBJECT_SCHEMA = 'XYZ' AND SYSTEM_OBJECT_NAME = 'XYZ' AND OBJECT_TYPE = '*FILE');
select @my_Counter from sysibm.sysdummy1;
drop variable @my_Counter;
变量是位于库中的 CL SRVPGM,如果您有问题,请在创建和使用变量之前指定库(abc.@my_Counter 或使用 SET SCHEMA 和 SET PATH 命令。
按照惯例,我在变量之前使用@。
要显示变量,请使用 sysibm.sysdummy1 文件。
推荐阅读
- python - 在QThread中:函数完成后1秒再次调用函数
- rust - 为什么程序宏在我的构建脚本中看不到由 dotenv 设置的环境变量?
- amazon-web-services - docker exec cli 对等通道创建 | 未能创建新连接:超出上下文期限 | 亚马逊管理的区块链
- elasticsearch - ElasticSearch 应该嵌套和 bool must_not 存在
- sql - 更新表 1 中与表 2 不匹配的多个列。如果匹配,我不想更新
- c# - 在 DDD 中,子实体是否可以引用聚合根
- c# - C# Datetime 用小时和分钟添加天数
- datetime - Pine Script:如何在每次价格更新时在标签上的图表时区显示当前时间?
- reactjs - orderBy 与 react-firebase-hooks/firestore 不工作
- jquery - 使用ajax向json子对象提交值