oracle存储过程提问:oracle 用存储过程将一张表里面的数据查出来之后,批量插入另一张表中。这个存储过程怎么写啊。我写的这个怎么没有反应啊。。。。。
等高手救援,谢谢!
不行啊,创建的存储过程有编译错误。。。。。。。
追答参数v_date:类型是字符,格式='yyyy/mm'。
参数v_cp:类型是字符,格式='...'。
字段名1:改成英文字符,类型是字符,格式='yyyy/mm/dd'。
字段名2:改成英文字符,类型是字符。
在数据表中的date1字段格式为'yyyy/mm/dd',而输入的参数v_date的格式为'yyyy/mm'
所以我不知道是不是因为 "date1" BETWEEN v_date||'/01' ANDv_date||'/31' 这句话导致的编译错误
"date1"的双引号去掉,直接写date1。同样。"cp1"的双引号去掉,直接写cp1。
INSERT INTO ora201301 SELECT * FROM bh
WHERE date1 BETWEEN v_date||'/01' AND v_date||'/31' AND cp1=v_cp;
不行啊,创建的存储过程有编译错误。。。。。。。
追答create or replace procedure monthdataeximport
(v_date1 in varchar2,
v_cp1 in varchar2)
as
v_sql varchar2(2000);
begin
v_sql := 'create table ora20013001 as select * from bh where date1 between to_date('||v_date1||'+1,''yyyymmddhh24miss'')
and to_date('||v_date1||'+31,''yyyymmddhh24miss'')
and cp1='||v_cp1||'';
EXECUTE IMMEDIATE v_sql;end monthdataeximport;
-------------------------------------
执行完上边以后可能需要赋权,用system用户登录
grant create table to 用户;
用户就是你建立存储过程的这个用户
还有输入的参数v_date1要是20130302121212
也就是年月日时分秒的格式