【发布时间】:2017-07-21 18:35:30
【问题描述】:
我最近开始在 TOAD DB2 中工作,我正在尝试设计一些模板,在这些模板中我对多个查询使用特定术语。
即
SELECT * FROM TABLE1 WHERE PERSON = 'X';
SELECT * FROM TABLE2 WHERE PERSON = 'X';
SELECT * FROM TABLE3 WHERE PERSON = 'X';
等等……
我希望找到一种设置单个变量的方法,以便我可以编写更像这样的代码:
SET PERS_CODE = 'X'
SELECT * FROM TABLE1 WHERE PERSON = :PERS_CODE;
SELECT * FROM TABLE2 WHERE PERSON = :PERS_CODE;
SELECT * FROM TABLE3 WHERE PERSON = :PERS_CODE;
等等……
困难在于我很少将所有查询作为批处理运行。我运行一个查询来研究如何最好地编写代码来进行 BA 修改;研究结果,并标记需要更改的术语和唯一标识记录的术语。所以我临时运行它们,我不想将它们作为批处理或单个程序运行。
相反,我正在寻找一种定义变量的方法,这样当我运行任何单个查询时,它会发现变量是如何定义的,而无需将 SET 语句放入每一行,而无需将所有查询作为批处理运行(或单个过程)或使用项目管理器绑定变量表。
我的研究
我在“项目管理器”中遇到了变量定义表,但是这是有问题的,因为我需要记住在另一个屏幕中为每个工作项更改变量。我想在单个 EDITOR 窗口中定义变量,因此,我可以在使用相同变量术语(但值不同)的 EDTOR 窗口之间切换,而无需记住重置值。
我还遇到过“--TOAD:”语法,它有助于在 EDITOR 窗口中定义变量。但是,这需要包含在程序中。因此,如果我需要为 TABLE2 而不是 TABLE1 运行查询,我将无法使用该变量,因为定义将在 TABLE1 查询代码之上。
即
--TOAD: SET PERS_CODE = 'X'
SELECT * FROM TABLE1 WHERE PERSON = :PERS_CODE;
SELECT * FROM TABLE2 WHERE PERSON = :PERS_CODE;
这不允许我在不运行 TABLE1 查询或每次修改代码的情况下使用 TABLE2 的变量定义。
【问题讨论】:
标签: db2 global-variables toad