【200分】一个包含日期条件的存储过程,日期对象该如何处理??如果可以马上结贴!!!!!!!!

zhangsq 2008-12-22 08:32:12

create table salary(
sid number(8),
sname varchar2(20),
smoney number(10,2),
sdate date,
constraint salary_PK primary key(sid)
)
存储过程(查得某个某个阶段工资总和输出),日期拼写到条件中老是报错,该如何处理,
create or replace procedure sumsalary(sid number,vdate varchar2,sumsall out number)
as
v_Sql varchar2(200);
vv_date date;
date2 date;

begin
vv_date:=to_date(vdate,'YYYY-MM-DD');
date2:=add_months(vv_date,-12);

v_Sql:='select sum(smoney) from salary where usid='||sid||' and sdate>'||date2||', and sdate <='||vv_date;
execute immediate v_Sql into sumsall;
end;
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjq521521 2008-12-23
  • 打赏
  • 举报
回复
1楼的正解。
dinghaohong81 2008-12-23
  • 打赏
  • 举报
回复
v_Sql:='select sum(smoney) from salary where usid='||sid||' and sdate>'||date2||', and sdate <='||vv_date;

--->

v_Sql:='select sum(smoney) from salary where usid='||sid||' and sdate>'||date2||' and sdate <='||vv_date;

多了一个逗号;
其次你这个语句有问题吧:where usid='||sid||'就限定了记录的唯一性,
那结果跟 v_Sql:='select smoney from salary where usid='||sid; 是一样的。自己想想看??
icss_zhen 2008-12-22
  • 打赏
  • 举报
回复
同一个问题开二个贴啊,接分了,
select sum(smoney) into sumsall from salary where usid=sid and sdate>date2 and sdate <=vv_date;
hebo2005 2008-12-22
  • 打赏
  • 举报
回复
select sum(smoney) into  sumsall

from salary where usid=sid
and sdate>to_date(vdate,'YYYY-MM-DD') and sdate<add_months(vv_date,-12)



这样不就行了
mantisXF 2008-12-22
  • 打赏
  • 举报
回复
-- TRY IT .. 好像是逗号问题  '||date2||', and sdate
CREATE OR REPLACE PROCEDURE SUMSALARY(SID NUMBER,
VDATE VARCHAR2,
SUMSALL OUT NUMBER) AS
V_SQL VARCHAR2(200);

BEGIN
V_SQL := 'SELECT SUM(SMONEY) FROM SALARY WHERE USID=' || SID ||' AND SDATE>ADD_MONTHS(TO_DATE('||VDATE||', ''YYYY-MM-DD''), -12) AND SDATE <= TO_DATE('||VDATE||', ''YYYY-MM-DD'')';
EXECUTE IMMEDIATE V_SQL INTO SUMSALL;
END;
[Quote=引用楼主 zhangsq 的帖子:]

create table salary(
sid number(8),
sname varchar2(20),
smoney number(10,2),
sdate date,
constraint salary_PK primary key(sid)
)
存储过程(查得某个某个阶段工资总和输出),日期拼写到条件中老是报错,该如何处理,
create or replace procedure sumsalary(sid number,vdate varchar2,sumsall out number)
as
v_Sql varchar2(200);

[/Quote]

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧