想把select * from y_busstatusinfo where workdate=to_date(d,'yyyy-mm-dd')写成存储过程是这样么?
参数怎么定义?
create or replace procedure getlasttime_date(d in varchar2)is 
begin
select * from y_busstatusinfo where workdate=to_date(d,'yyyy-mm-dd')
end getlasttime_date;调用是?
EXEC getlasttime_date('2012-11-20');

解决方案 »

  1.   

    为什么要写进存储过程呢,存储过程中无法返回sql那样的数据集,只能输出。
    你这样的写法有问题
    存储过程,函数或者pl/sql匿名块中须是 select ..into的语法
      

  2.   

    2楼正确,存储过程里面不能用select ...
    只能是select ... into ....
      

  3.   

    那要返回结果集 怎么写?
    请帮忙写个完整的呗
    不会select ... into .... 
      

  4.   

    create or replace procedure getlasttime_date(d in varchar2)
    is     cursor mycur is
                select a,b
                from y_busstatusinfo
                where workdate=to_date(d,'yyyy-mm-dd');
    v_a  y_busstatusinfo.a%type;
    v_b  y_busstatusinfo.b%type;
    begin
         open mycur;
         fetch mycur into v_a,v_b;
         dbms_output.put_line('结果为:'||v_a||' '||v_b);
         close mycur;
    end getlasttime_date;
    说明:a,b是你要查询表中的字段名,要是全查出来就都列出来,v_a,v_b是对应的变量,需要根据你的字段数量增加
    其实你要实现的功能写个视图就可以了。