【问题标题】:Using variables in Oracle SQL Developer 3.2在 Oracle SQL Developer 3.2 中使用变量
【发布时间】:2013-05-26 10:59:43
【问题描述】:

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

【问题讨论】:

    标签: oracle variables oracle-sqldeveloper


    【解决方案1】:

    使用单个&SQL Developer documentation 中简要介绍了这一点:

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

    ...在SQL*Plus documentation 中有更详细的信息,这在很大程度上与两个客户都相关。

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

    【讨论】:

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

      参考:

      【讨论】:

        猜你喜欢
        • 2011-08-04
        • 1970-01-01
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多