我在SQL代码中多次使用了变量&WEIGHT
。当我执行时,出现以下窗口,要求我设置变量的值。
我有两个主要问题:
1)文字和环境变量有什么区别?
2)变量&WEIGHT
在SQL代码中多次声明。这意味着所有这些语句将采用相同的值是正确的吗?
答案 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变量,它们将得到相同的值。