想在存储过程里 写成这个格式:
select * from perf_bsc Where  ne_id not in (select ne_id from perf_bsc where start_time=to_date('2008-10-07 00:00:00','yyyy-mm-dd hh24:mi:ss'))
And start_time=to_date('2008-10-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
CREATE OR REPLACE Procedure exec_fill_idlecell(start_time_Input Date)
As
--start_time_input_after Date;
  v_sql Varchar2(200);
  --v_sql2 Varchar2(200);
Begin
v_sql:='Create Table IdlecellTmpTab As select * from perf_bsc where ne_id not in (select ne_id from perf_bsc where start_time=''';
v_sql:=v_sql || start_time_input;
v_sql:=v_sql|| ') and start_time=''';
v_sql:=v_sql||start_time_input;
v_sql:=v_sql||'''';execute Immediate  v_sql;
执行的时候 总是报错了 不是缺少又括号就是别的。。 求教~~

解决方案 »

  1.   

    select * from perf_bsc Where  ne_id not in (select ne_id from perf_bsc where start_time=to_date('2008-10-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
    And start_time=to_date('2008-10-07 00:00:00','yyyy-mm-dd hh24:mi:ss') 
      

  2.   

    v_sql:='Create Table IdlecellTmpTab As select * from perf_bsc where ne_id not in (select ne_id from perf_bsc where start_time='; 
    v_sql:=v_sql || start_time_input; 
    v_sql:=v_sql|| ') and start_time='; 
    v_sql:=v_sql||start_time_input; 试试这个?
      

  3.   

    这么改
    CREATE OR REPLACE Procedure exec_fill_idlecell(start_time_Input Date) 
    As 
    --start_time_input_after Date; 
      v_sql Varchar2(500); 
      --v_sql2 Varchar2(200);
    v_sql:='Create Table IdlecellTmpTab As 
      select * from perf_bsc where ne_id not in (
        select ne_id from perf_bsc where start_time=to_date('''; 
    v_sql:=v_sql || to_char(start_time_input,'yyyymmddhh24miss'); 
    v_sql:=v_sql|| ''',''yyyymmddhh24miss'')) 
        and start_time=to_date('''; 
    v_sql:=v_sql||to_char(start_time_input,'yyyymmddhh24miss'); 
    v_sql:=v_sql||''',''yyyymmddhh24miss'')';execute Immediate  v_sql; 
    end exec_fill_idlecell;
    或者将传入参数的格式改成字符型,可以省去to_char这步
      

  4.   

    传入的参数,把它用to_char(start_time_Input,'yyyy-mm-dd hh24:mi:ss')转换一下!