3

我对 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先询问它们?

4

2 回答 2

3

使用单个&. 这在SQL Developer 文档中有简要介绍:

对于替换变量,语法 &&variable 分配一个永久变量值,而语法 &variable 分配一个临时(未存储)变量值。

...以及更详细的SQL*Plus 文档,这在很大程度上与这两个客户端相关。

请注意,如果您defineaccept变量,则即使使用一个&符号也不会提示它,但目前这似乎与您无关。

于 2013-05-26T20:58:15.930 回答
2

SQL-plus 中有两种类型的变量:替换和绑定。

替换变量可以替换 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 支持替换变量,但是当您使用绑定:var语法执行查询时,系统会提示您进行绑定(在对话框中)。

参考:

于 2014-03-04T12:19:18.160 回答