在Oracle SQL Developer 3.2中使用变量

时间:2013-05-26 10:59:44

标签: oracle variables oracle-sqldeveloper

我是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这些变量?

2 个答案:

答案 0 :(得分:3)

使用一个&SQL Developer documentation

简要介绍了这一点
  

对于替换变量,语法&&变量分配永久物   变量值,语法和变量分配一个临时的(不是   存储的)变量值。

...更详细地介绍SQL*Plus documentation,这对两个客户都很重要。

请注意,如果您defineaccept变量,那么即使使用单个&符号也不会提示,但目前似乎与您无关。< / 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语法执行查询时,系统会提示您进行绑定(在对话框中)。

参考: