如何在 sql/plsql 中绑定变量

how to bind varible in sql/plsql

我的查询是

with dates_table as (
                 SELECT to_date(:begin_date, 'dd/mm/yyyy') + ROWNUM - 1 cal_day
                        FROM dual
                  CONNECT BY LEVEL <= to_date(:end_date, 'dd/mm/yyyy') - to_date(:begin_date, 'dd/mm/yyyy') + 1)
    SELECT '1' AS ID,
           'bank' AS DESC,
           cal_day AS dates,
           (SUM (
               CASE
                  WHEN S_DATE BETWEEN ADD_MONTHS (cal_day, 0) - 13
                                  AND ADD_MONTHS (cal_day, 0) - 7
                  THEN
                     VOLUME
                  ELSE
                     0
               END))
              LAST_14_days,
           (SUM (
               CASE
                  WHEN S_DATE BETWEEN ADD_MONTHS (cal_day, 0) - 6
                                  AND ADD_MONTHS (cal_day, 0)
                  THEN
                     VOLUME
                  ELSE
                     0
               END))
              last 7day
      FROM abc, day
      where day.cal_day between '13-NOV-16' and '22-MAR-17'
      group by cal_day
      order by cal_day

您可以将上部的参数 sql 替换为以下内容:

SELECT to_date('&&begin_date', 'dd/mm/yyyy') + ROWNUM - 1 cal_day
                        FROM dual
                  CONNECT BY LEVEL <= to_date('&&end_date', 'dd/mm/yyyy') - to_date('&&begin_date', 'dd/mm/yyyy') + 1)
....

对于数值,您可以直接定义不带单引号的变量'',但您应该为日期或字符串类型参数包含引号。在每种情况下都使用 double ampersand 以便重复参数(你有多个 :begin_date )不会提示你(通常,你也可以使用 single ampersand ,但在这种情况下你会提示输入每个参数,即使它们相同)