我最近开始在蟾蜍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语句放入每个单独的行中,而无需将所有查询作为批处理(或单个过程)运行,也不需要使用Project绑定变量表。
我的研究
我在"Project“中遇到了变量定义表,但是这是有问题的,因为我需要记住在另一个屏幕中更改每个工作项的变量。我希望在单个编辑器窗口中定义变量,这样,我就可以在使用相同变量术语(但不同值)的EDTOR窗口之间切换,而不必记住重置值。
我还遇到了“-TOAD:”语法,它有助于在编辑器窗口中定义变量。然而,这需要列入程序。因此,如果我需要运行TABLE2而不是TABLE1的查询,我将无法使用该变量,因为定义将位于TABLE1查询代码之上。
即
--TOAD: SET PERS_CODE = 'X'
SELECT * FROM TABLE1 WHERE PERSON = :PERS_CODE;
SELECT * FROM TABLE2 WHERE PERSON = :PERS_CODE;这不允许我在每次不运行TABLE2查询或修改代码的情况下使用TABLE1变量定义。
发布于 2017-07-21 19:19:48
在这里,您可能会发现替换变量更合适。
SELECT * FROM TABLE1 WHERE PERSON = &&PERS_CODE;
SELECT * FROM TABLE2 WHERE PERSON = &&PERS_CODE;当执行其中一条语句时,系统会提示您输入PERS_CODE的值。当您以脚本形式运行多个语句时,所有语句都将重用相同的值。替换变量可以使用单个符号和双符号来定义。当使用单个符号时,将提示您输入脚本中的每个变量,即使它们具有相同的名称。双符号和提示一次又一次重复使用该值。蟾蜍的编辑器将记住最后一个使用的值,因此您可以继续以特殊的方式运行查询,并且您只需要在要测试不同的值时重置该值。
如果PERS_CODE是一个字符串,那么在查询中使用它和引号。
SELECT * FROM TABLE1 WHERE PERSON = '&&PERS_CODE';编辑:由于性能原因,绑定变量更好(:VAR_NAME),但根据您的需要,我认为替换变量会使您更容易。
https://stackoverflow.com/questions/45244569
复制相似问题