我是SQL的新手,并设法从其他一些查询中提取我们使用以下语法:
--VARIABLES
undefine PF_PROD --product;
undefine PF_PSG --shop;
--QUERY
SELECT *
FROM ET1250
WHERE PRODUCT=&&PF_PROD
AND PRICE_SHOP_GROUP=&&PF_PSG
ORDER BY PERIOD_YEAR desc,PERIOD_WEEK desc;
只要我先运行undefine
语句,这样就可以正常工作了吗?有没有办法让查询总是要求这些变量,而不必先让undefine
这些变量?
答案 0 :(得分:3)
使用一个&
。 SQL Developer documentation:
对于替换变量,语法&&变量分配永久物 变量值,语法和变量分配一个临时的(不是 存储的)变量值。
...更详细地介绍SQL*Plus documentation,这对两个客户都很重要。
请注意,如果您define
或accept
变量,那么即使使用单个&符号也不会提示,但目前似乎与您无关。< / p>
答案 1 :(得分:2)
SQL-plus中有两种类型的变量:substitution和bind。
替换变量可以替换SQL * Plus命令选项或其他硬编码文本:
define a = 1;
select &a from dual;
undefine a;
绑定变量存储在RDBMS中执行的SQL和PL / SQL语句的数据值;他们可以保存单个值或完整的结果集b:
var x number;
exec :x := 10;
select :x from dual;
exec select count(*) into :x from from dual;
exec print x;
SQL Developer支持替换变量,但是当您使用bind :var
语法执行查询时,系统会提示您进行绑定(在对话框中)。
参考: