我有使用这个变量的脚本
with
TIME_DATA as ( select $$D:=:DA$$ td from dual),
GROUP_INFO as (select $$N:=:GR_ID$$ gr_id_number from dual),
并像这样使用它们
A_PLUS_TEK as(select point_id, ml_id, ml_name, val a_plus_month, DA
from VALUE_DATA, TIME_DATA
where ml_id = 381 and DA = trunc(td, 'MM'))
我想知道如何初始化这个变量,现在当我运行脚本时,我有这个输出:
Bind Variable "DA$$" is NOT DECLARED
编辑:通常用户在网站上输入这个值,我只能访问数据库,我从报告表中获取脚本。另外我想知道如何从 c# 初始化这个变量。
EIDT2:我以这个为例(如何在 Oracle SQL Developer 中使用变量?)。有用。
variable v_count number;
variable v_emp_id number;
exec :v_emp_id := 1234;
exec select count(1) into :v_count from emp;
select *
from emp
where empno = :v_emp_id
exec print :v_count;
我的代码:
declare
variable DA$$ VARCHAR2(80);
variable gr_id$$ number;
begin
exec :DA$$ := to_date('2011-09-13 09:00:00', 'YYYY-MM-DD HH24:MI:SS');
exec :gr_id$$ := '1341';
BEGIN
然后声明:
WITH
TIME_DATA as ( select $$D:=:DA$$ td from dual),
GROUP_INFO as (select $$N:=:GR_ID$$ gr_id_number from dual),
....
END;
但是还是有这个
Bind Variable "DA$$" is NOT DECLARED
anonymous block completed
这也没什么改变
exec :DA$$ := '2011-09-13 09:00:00';
我认为 DA$$ 是日期,因为它在 trunc() 中使用,DA = trunc(td, 'MM'))
当我选择 Run Statement(trl+Enter) 时,Sql Developer 提供输入绑定变量,但我不知道如何输入日期。
EDIT3:最后我在没有声明、开始、结束的情况下这样做,它可以工作:
variable DA$$ VARCHAR2(80);
variable gr_id$$ number;
exec :DA$$ := to_date('2011-09-13 09:00:00', 'YYYY-MM-DD HH24:MI:SS');
exec DBMS_OUTPUT.PUT_LINE(:DA$$);
exec :gr_id$$ := '1341';
with
TIME_DATA as ( select $$D:=DA$$; td from dual),
GROUP_INFO as (select $$N:=:GR_ID$$ gr_id_number from dual),
...