sql2005中的语法:
declare @date_begin datetime;
declare @date_end datetime;begin
set @date_begin = '2012-04-01';
set @date_end = '2012-04-30';SELECT * FROM table_数据表1 WHERE col_日期 BETWEEN @date_begin AND @date_end;
SELECT * FROM table_数据表2 WHERE col_日期 BETWEEN @date_begin AND @date_end;
SELECT * FROM table_数据表3 WHERE col_日期 BETWEEN @date_begin AND @date_end;
SELECT * FROM table_数据表4 WHERE col_日期 BETWEEN @date_begin AND @date_end;
SELECT * FROM table_数据表5 WHERE col_日期 BETWEEN @date_begin AND @date_end;
end;

各位老大们啊,这个sql2005中没有问题,从前没用过oracle,我在使用oracle的时候遇见使用变量的问题,变量死活用不出来,求求各位老大了,我也没啥分,好心的老大就帮忙翻译成oracle的语法吧,真心的谢谢了。

解决方案 »

  1.   

    declare @date_begin datetime; =  date_begin date;set @date_begin = '2012-04-01'; =  date_begin := to_date( '2012-04-01','yyyy-mm-dd');
      

  2.   

    楼上的老大,不是这个问题,我用的VS2008连接的oracle,实际运行代码为:
    declare 
    date_begin date;
    date_end date;begin
    date_begin := to_date('2012-04-01','yyyy-mm-dd');
    date_end := to_date('2012-04-30','yyyy-mm-dd');
    select * from xf_vip where xf_lastmodtime between date_begin and date_end;
    end;执行时的错误:
    PLS-00428: 在此 SELECT 语句中缺少 INTO 子句
      

  3.   

    在begin end中就一个sql查询就是报错的。
    把begin end掉,直接
    select * from xf_vip where xf_lastmodtime between to_date('2012-04-01','yyyy-mm-dd')and to_date('2012-04-30','yyyy-mm-dd');
      

  4.   

    select * from xf_vip where xf_lastmodtime between date_begin and date_end;你想干啥,获取数据?进行下一步运算。如果这样,需要用游标。
      

  5.   

    你建立这个存储过程要干嘛?
    报这个错的原因是你的select * from ……然后就不管了,那你查出来有何用?
      

  6.   

    oracle 和sqlserver是不同的
    在sqlserver里的存储过程里放个select语句,最后就会默认返回结果集(在2000里是这样,2005没用过)
    但oracle里不会,你要用输出变量把结果集手动的返回比如这样:
    create or replace procedure test1(cur OUT sys_refcursor) AS BEGIN
    OPEN cur FOR
    SELECT dad FROM t1 WHERE rownum<9;
    end test1;
      

  7.   

    谢谢各位老大的回答了,我先看看oracle存储过程的书,然后再整这个,哈哈,真心感谢