Db2 toadsql变量

Db2 toadsql变量,db2,global-variables,toad,Db2,Global Variables,Toad,我最近开始在toaddb2中工作,我正在尝试设计一些模板,在这些模板中,我使用一个特定的术语来表示多个查询 i、 e 等等 我希望找到一种方法来设置一个变量,这样我就可以编写如下代码: SET PERS_CODE = 'X' SELECT * FROM TABLE1 WHERE PERSON = :PERS_CODE; SELECT * FROM TABLE2 WHERE PERSON = :PERS_CODE; SELECT * FROM TABLE3 WHERE PERSON = :PERS

我最近开始在toaddb2中工作,我正在尝试设计一些模板,在这些模板中,我使用一个特定的术语来表示多个查询

i、 e

等等

我希望找到一种方法来设置一个变量,这样我就可以编写如下代码:

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 Manager绑定变量表来运行


我的研究 我在“项目经理”中遇到了变量定义表,但是这是有问题的,因为我需要记住在另一个屏幕中为每个工作项更改变量。我想在单个编辑器窗口中定义变量,这样,我就可以在使用相同变量术语(但不同值)的EDTOR窗口之间切换,而无需记住重置值

我还遇到了“-TOAD:”语法,它有助于在编辑器窗口中定义变量。但是,这需要包括在程序中。因此,如果我需要为TABLE2而不是TABLE1运行查询,我将无法使用该变量,因为该定义将位于TABLE1查询代码之上

i、 e


这不允许我在每次不运行TABLE1查询或修改代码的情况下使用TABLE2的变量定义。

您可能会发现替换变量在这里更合适

SELECT * FROM TABLE1 WHERE PERSON = &&PERS_CODE;
SELECT * FROM TABLE2 WHERE PERSON = &&PERS_CODE;
当您执行其中一条语句时,系统会提示您输入PERS_代码的值。当您以脚本形式运行多个语句时,所有语句都将重用相同的值。替换变量可以使用单和双符号来定义。当使用单个符号AND时,系统会提示您输入脚本中的每个变量,即使它们具有相同的名称。双符号提示一次,每隔一次重复使用该值。Toad的编辑器将记住上次使用的值,因此您可以继续以特殊方式运行查询,并且只需在您想要测试不同的值时重置该值

如果PERS_代码是一个字符串,那么在带引号的查询中使用它

SELECT * FROM TABLE1 WHERE PERSON = '&&PERS_CODE';

编辑:出于性能原因,绑定变量更好(:VAR_NAME),但出于您的需要,我认为替换变量将使您的工作更轻松。

抱歉,这似乎不起作用。收到以下错误消息;SQL0104-Token&无效。我假设您使用的是Toad for Oracle,但看起来您使用的是DB2。
SELECT * FROM TABLE1 WHERE PERSON = &&PERS_CODE;
SELECT * FROM TABLE2 WHERE PERSON = &&PERS_CODE;
SELECT * FROM TABLE1 WHERE PERSON = '&&PERS_CODE';