蟾蜍 SQL - 变量



我最近开始使用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:"语法,它有助于从编辑器窗口中定义变量。但是,这需要包含在程序中。因此,如果我需要对 TABLE2 而不是 TABLE1 运行查询,我将无法使用该变量,因为定义将位于 TABLE1 查询代码之上。

--TOAD: SET PERS_CODE = 'X'
SELECT * FROM TABLE1 WHERE PERSON = :PERS_CODE;
SELECT * FROM TABLE2 WHERE PERSON = :PERS_CODE;

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

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

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

执行其中一个语句时,系统会提示您输入 PERS_CODE 值。当您将多个语句作为脚本运行时,所有语句都将重用相同的值。替换变量可以使用单与号和双与号定义。使用单个 & 符号时,系统会提示您输入脚本中的每个变量,即使它们具有相同的名称。双 & 符号提示一次,每隔一次重复使用该值。Toad 的编辑器会记住上次使用的值,以便您可以继续以临时方式运行查询,并且只需在要测试其他值时重置该值。

如果PERS_CODE是一个字符串,则在查询中用引号使用它。

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

编辑:出于性能原因,绑定变量更好(:VAR_NAME(,但对于您的需求,我认为替换变量会让您更容易。

相关内容

  • 没有找到相关文章

最新更新