本人初用ORACLE :)
有一个表SoundDataEx
字段
ID    数字形
SendName 串型
SendShengFeng  数字型
SendID        串型
WordType      数字型
ListennID      串型
ListenName     串型
SendSMS        数字型
LeftTime       时间型写个存储过程获得大于一个给定时间小于LeftTime 并且SendSMS=0 或SendSMS  is NULL 的前20个记录

解决方案 »

  1.   

    有一个表SoundDataEx
    字段
    ID    数字形
    SendName 串型
    SendShengFeng  数字型
    SendID        串型
    WordType      数字型
    ListennID      串型
    ListenName     串型
    SendSMS        数字型
    LeftTime       时间型写个存储过程获得大于一个给定时间小于LeftTime 并且SendSMS=0 或Se的前20个记录create procedure record_back 
    @settime datetime,
    @time datetime,
    returns table
    as
    begin
    if( @settime<@time<LeftTime)
    select * from SoundDataEx where SendSMS=0 or SendSMS  is NULL 
    end
      

  2.   

    可能要先定义一个记录集的type,
    create or replace type t_SoundDataEx as object
    (
             Id              number(10),    
             SendName varchar2(20),
    SendShengFeng  number(10),
    SendID        varchar2(20),
    WordType      number(10),
    ListennID      varchar2(20),
    ListenName     varchar2(20),
    SendSMS        varchar2(20),
    LeftTime       date
    );
    create or replace type t_tab_SoundDataEx as table
    of t_ASoundDataEx;create or replace procedure p_test (p_time in varchar2,p_tTab_sdEx out t_tab_SoundDataEx) as
      i number;
      tAsdEx ASoundDataEx;
    begin 
      i:=0;
      p_tTab_sdEx:=new t_tab_SoundDataEx();
      for v in (select * from asounddataex t where t.LeftTime>to_date(p_time,'yyyymmdd') and (t.SendSMS=0 or t.SendSMS  is NULL ) and rownum<=20) loop
         i:=i+1;
         tAsdEx.id:=v.id;
              tAsdEx.SendName:=v.sendname;
    tAsdEx.SendShengFeng:=v.SendShengFeng;
    tAsdEx.sendid:=v.sendid;
    tAsdEx.wordtype:=v.wordtype;
    tAsdEx.listennid:=v.listennid;
    tAsdEx.listenname:=v.listenname;
    tAsdEx.sendsms:=v.sendsms;
    tAsdEx.lefttime:=v.lefttime;p_tTab_sdEx.extend;
    p_tTab_sdEx(i):=tAsdEx;  end loop;end p_test;
      

  3.   

    --获得大于一个给定时间小于LeftTime  这句没看懂,原理大概就是下面这样
    create or replace procedure sp_Test( aTime date,aLeftTime date,rst out sys_refcursor ) 
    is
    begin
      open rst for
      select * from SoundDataEx where leftTime<aLeftTime and ( SendSMS=0 or SendSMS is null ) and rownum<=20
    end;