Toad for Oracle 12.12:文字和环境变量有什么区别?

Toad for Oracle 12.12: What is the difference between Literal and Environment Variable?

我在 SQL 代码中多次使用变量 &WEIGHT。当我执行时,出现以下 window 要求我设置我的变量的值。

我有两个主要问题:

1) 字面量和环境变量有什么区别?

2) &WEIGHT 变量在 SQL 代码中多次声明。这意味着所有这些语句都将采用相同的值,对吗?

文字是您手动输入的内容 - 例如,10 作为 Scott 表中的 DEPTNO。

环境变量顾名思义 - 允许您在 TOAD 或系统变量(例如 SYSDATE、PATH、TNSADMIN 等)之间进行选择。

关于你的第二个问题,是的 - 无论你有多少语句(SQL 或 PL/SQL),windows,不同的连接......如果你使用相同的所有的 WEIGHT 变量,它们将获得相同的值。

替换变量(此处为&WEIGHT)是一个占位符,就像程序单元中的变量一样,出于性能原因很有用。由于在这种情况下执行 select 语句的解析执行一次,而对于每个文字解析操作都会重复。因此,每个语句的 None 对每次调用都具有相同的值。

此外,使用文字存在 sql 注入漏洞。

P.S。对于字符串类型的值,使用单引号 '&STR' 替换变量。

Littlefoot 对文字变量与环境变量的解释非常准确。关于您的第二个问题,系统将提示您为使用单个&符号声明的每个 WEIGHT 提供一个值。如果您想输入一次 WEIGHT 并在每次使用时保留相同的值,请使用双符号。

示例 1,两次提示输入 WEIGHT。

select &WEIGHT, &WEIGHT from dual;

例2,提示WEIGHT一次

select &&WEIGHT, &&WEIGHT from dual;

当您将许多语句作为脚本一起执行时,single/double 符号也适用,Toad 中的 F5 快捷方式。

示例 1,两次提示 WEIGHT,每个语句一次。

select &WEIGHT from dual;
select &WEIGHT from dual;

示例 2,提示输入 WEIGHT 一次,一旦第一次遇到它,该值将重复用于使用 &&WEIGHT 的每个后续语句。

select &&WEIGHT from dual;
select &&WEIGHT from dual;

请参阅 SQL*Plus user's guide 中的 "Avoiding Unnecessary Prompts for Values" 部分。