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

时间:2019-01-30 20:41:15

标签: oracle variables toad

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

enter image description here

我有两个主要问题:

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

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

3 个答案:

答案 0 :(得分:2)

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

此外,使用文字对SQL注入也存在漏洞。

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

答案 1 :(得分:1)

Littlefoot对文字vs.环境变量的解释很明确。关于第二个问题,系统将提示您使用单个“&”号声明的每个WEIGHT值。如果要输入一次WEIGHT并为每次使用保留相同的值,请使用双“&”号。

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

select &WEIGHT, &WEIGHT from dual;

示例2,提示输入一次WEIGHT。

select &&WEIGHT, &&WEIGHT from dual;

当您以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中的“避免不必要的值提示”部分。

答案 2 :(得分:0)

您可以手动输入文字-例如10作为Scott表格中的DEPTNO。

顾名思义,环境变量-使您可以在TOAD或系统变量(例如SYSDATE,PATH,TNSADMIN等)中进行选择。

关于第二个问题,是的-无论您有多少条语句(SQL或PL / SQL),窗口,不同的连接...如果在所有这些语句中使用相同的WEIGHT变量,它们将得到相同的值。

相关问题