IBM i Access Client Solutions (ACS) 运行 SQL 脚本 - 打印变量

问题描述 投票:0回答:2

是否有一种简单的方法可以在 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 += ...”但没有这样的事情。有更好的方法吗?

sql-scripts
2个回答
1
投票

你好 KoenS,

我就是这样做的:

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 文件。


0
投票

要打印变量的内容,也可以使用

values @my_Counter;
© www.soinside.com 2019 - 2024. All rights reserved.