在线等待,这样的数据存储过程怎么写?分不够再加!急!!!!

chenxiaowen 2003-12-16 10:18:43
在程序中传递参数,有ry_id,riqi两个字段,从基础表中选择出符合在一个时间段内有此人员编号的所有记录,并插入到另外一个新表中(表已存在)并保存!先谢谢了!
...全文
42 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-12-22
  • 打赏
  • 举报
回复
insert into a select * from b where col_name between ... and ...;
JustJune 2003-12-22
  • 打赏
  • 举报
回复
用guomg(力友)的方法就应该行了!
iwantsay 2003-12-18
  • 打赏
  • 举报
回复
不需要加 Values 的。
boy002 2003-12-18
  • 打赏
  • 举报
回复
help you!!!

create or replace procedure aaa(ID in varchar2,rq1 in varchar2,rq2 in varchar2) as
BEGIN
delete 新表 WHERE RY_ID = id AND ( 时间段 > rq1 and 时间段 > rq2 );

INSERT INTO 新表 (字段1,字段2......)AVALUES --语法补充
SELECT (字段1,字段2......) FROM 基础表
WHERE RY_ID = id AND ( 时间段 > rq1 and 时间段 > rq2 );


END;
sunluo 2003-12-18
  • 打赏
  • 举报
回复
关注
binbin007 2003-12-18
  • 打赏
  • 举报
回复
用序列生成ID。主键怎么定义的??
chenxiaowen 2003-12-17
  • 打赏
  • 举报
回复
我用的是9i
iwantsay 2003-12-17
  • 打赏
  • 举报
回复
还有就是你具体实现时,时间段是怎么判断的??
iwantsay 2003-12-17
  • 打赏
  • 举报
回复
1by1() 的思路没有问题啊。
不过在Insert之前,要先执行

delete from 新表 where RY_ID = RYID AND 时间段 = RIQI

防止主键冲突。
guomg 2003-12-17
  • 打赏
  • 举报
回复
create or replace procedure aaa(ID in varchar2,rq1 in varchar2,rq2 in varchar2) as
BEGIN
delete 新表 WHERE RY_ID = id AND ( 时间段 > rq1 and 时间段 > rq2 );

INSERT INTO 新表 (字段1,字段2......)
SELECT (字段1,字段2......) FROM 基础表
WHERE RY_ID = id AND ( 时间段 > rq1 and 时间段 > rq2 );


END;
snowy_howe 2003-12-17
  • 打赏
  • 举报
回复
你需要提供具体表结构
zzzstar 2003-12-17
  • 打赏
  • 举报
回复
将时间段作为存储过程的参数,使用MERGE INTO完成更新。

create or replace procedure aaa(ry_id varchar2, --存储人员ID的字段名
riqi varchar2, --存储日期的字段名
date1 varchar2, --开始日期
date2 varchar2 --结束日期 ) as
.....

如果ry_id,riqi固定,就没有必要作为参数了。
chenxiaowen 2003-12-16
  • 打赏
  • 举报
回复
报错了!
这一行 INSERT INTO 新表 (字段1,字段2......)
1by1 2003-12-16
  • 打赏
  • 举报
回复
create or replace procedure aaa(RYID varchar2,RIQI varchar2) as
BEGIN
INSERT INTO 新表 (字段1,字段2......)
SELECT (字段1,字段2......) FROM 基础表
WHERE RY_ID = RYID AND 时间段 = RIQI
END;
chenxiaowen 2003-12-16
  • 打赏
  • 举报
回复
我不清楚,我是新手!
blueshu 2003-12-16
  • 打赏
  • 举报
回复
create or replace procedure aaa(a varchar2,b varchar2)as
v_sql varchar2(2000);
begin
v_sql:='';--拼装sql
execute immediate v_sql;
end;

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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