欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle存储过程时间参数有关问题。

更新时间: 2014-01-05 02:14:33 责任编辑: Author_N1

 

Oracle存储过程时间参数问题求救。。。。。
我有个Oracle存储过程,使用了时间参数,用的是date,貌似不好使,然后使用了string,在存储过程里面转成date,但是执行结果不正确,麻烦大牛给看看啥问题。
create or replace procedure MY_TEST_1(P_TABLE_CALC   IN VARCHAR2,
                                      P_TABLE_RESULT IN VARCHAR2,
                                      P_APPKEY       IN VARCHAR2,
                                      P_CALC_DEC     IN VARCHAR2,
                                      P_CALC_DATE    IN VARCHAR2) IS
  V_SQL VARCHAR2(500);
  V_DATE VARCHAR2(30);
BEGIN
  V_DATE := to_date(P_CALC_DATE,'yyyy-mm-dd HH24:MI:SS');
  V_SQL := ' INSERT INTO ' || P_TABLE_CALC || ' (CTIME,
     APPKEY,
     GAMECHANNEL,
     GAMEREALM,
     GAMEVERSION,
     RESULT_CNT,
     RESULT_DEC)
     SELECT ''' || to_date( P_CALC_DATE ,'yyyy-mm-dd HH24:MI:SS') || ''',
           ''' || P_APPKEY || ''',
           GAMECHANNEL,
           GAMEREALM,
           GAMEVERSION,
           NVL(SUM(AMOUNT), 0),''' || P_CALC_DEC || ''' FROM ' ||
           P_TABLE_RESULT || ' T
     WHERE T.CTIME >= ''' || to_date( P_CALC_DATE ,'yyyy-mm-dd HH24:MI:SS') || '''
     GROUP BY T.GAMECHANNEL, T.GAMEVERSION, T.GAMEREALM';
  EXECUTE IMMEDIATE 'COMMIT';
  DBMS_OUTPUT.put_line('The result is ' || V_SQL);
  DBMS_OUTPUT.put_line('The date is ' || V_DATE);
  COMMIT;
END MY_TEST_1;


在执行的过程中看了输出,日期格式是:‘16-9月 -13’这样的,同样的语句我不用存储过程,直接赋值执行就没有问题,这个是执行输出:
The result is  INSERT INTO mbi_Test_calc_tmp (CTIME,
     APPKEY,
     GAMECHANNEL,
     GAMEREALM,
     GAMEVERSION,
     RESULT_CNT,
     RESULT_DEC)
     SELECT '16-9月 -13',
           'dddd',
           GAMECHANNEL,
           GAMEREALM,
           GAMEVERSION,
           NVL(SUM(AMOUNT), 0),'fffff' FROM mbi_test_role_recharge T
     WHERE T.CTIME >= '16-9月 -13'
     GROUP BY T.GAMECHANNEL, T.GAMEVERSION, T.GAMEREALM
The date is 16-9月 -13


麻烦大牛看下,谢谢了。
--参考方法--
你表P_TABLE_CALC中CTIME如果是Varchar2类型,你就去掉
 V_DATE := to_date(P_CALC_DATE,'yyyy-mm-dd HH24:MI:SS'); 
 SELECT ''' 
--参考方法--
 to_date( P_CALC_DATE ,'yyyy-mm-dd HH24:MI:SS') 
--参考方法--
 ''', 改为
 SELECT P_CALC_DATE, 
如果是date类型:
SELECT ''' 
--参考方法--
 to_date( P_CALC_DATE ,'yyyy-mm-dd HH24:MI:SS') 
--参考方法--
 ''', 改为
 SELECT V_DATE, 

--参考方法--
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:33
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7417/
本文WWW.DOC100.NET DOC100.NET版权所有。