ORACLE存储过程的问题: 假设有A表,B表和C表,B表和C表是一样的字段,要把B表或者C表的数据插入到A表
发布网友
发布时间:2022-12-28 23:10
我来回答
共5个回答
热心网友
时间:2023-10-24 15:14
授之以鱼不如授之以渔把,这类问题的调试都有一个标准方法,就是先把这句拼接的SQL字符串放入到一个定义的变量里,把这个变量返出来,或者DBMS.OUTPUT日志打出来,看看语句是否有问题,或者标点或者空格都有可能。具体你只要把打印出来的SQL语句单独执行下,根据错误提示就知道错误出在那了。然后在回去改拼接SQL语句的地方,如此往复,再复杂的SQL语句拼接也能够搞定。另外如果是通过游标循环生成的大SQL语句,建议存放在long类型变量中,因为一般的VACHAR2之类的字符类型会不够长,截断后面的语句,同样也会导致语句错误
热心网友
时间:2023-10-24 15:15
create or replace procere
P_NAME(ret out number,table_name in char, Dt in char)
is
v_sql varchar2(300);
begin
v_sql:='insert into A(name,id,date)
select name,id,date from ' ||table_name||‘ where date =’ || Dt;
execute immediate v_sql;
Commit;
end;
热心网友
时间:2023-10-24 15:15
create or replace procere
is
begin
insert into A as select * from B or select * from C;
execute immediate v_sql;
Commit;
end;
热心网友
时间:2023-10-24 15:16
execute immediate '
insert into A(name,id,date)
select name,id,date from '||table_name||' where date ='|| Dt;
注意标点符号及空格where 前不加空格,会和表名连一起
热心网友
时间:2023-10-24 15:16
报错信息贴出来
...表中的一些字段保存在C表中每月定时保存,用oracle怎么写存储过程_百 ...
A表和B的user_id是不是相同的主键,是的话就可以用一下的语句 CREATE OR REPLACE PROCEDURE get_A_B_to_C BEGIN insert to c (user_id,need_pay) select a.userid_id,b.need_pay from (selet user_id from A)a,(select user_id,need_pay from B)b where a.user_id=b.user_id and...
oracle存储过程,我如何把两个表中的两列数据进行替换
Update X set col=(Select c from Y where b=a);commit;end pr_update;
oracle两张表结构不相同,但有相同字段,想查询这个字段下的不同数据...
建议用存储过程来判断吧 使用游标循环a表 查询b表中是否存在a的time的记录 如果存在则不处理 不存在则插入c表即可
oracle存储过程,我如何把两个表中的两列数据进行替换
这个一个语句就可以实现了,不用着存储过程。Update X set 列=(Select c from Y where b=a);要求Y表中不能有重复行。
oracle存储过程从A表查查询数据到B表怎么写高手帮忙
什么叫从A表查询到B表,是把A表的数据插入到B表吗 insert into B select * from A where 条件;如果字段不一致的话,就要把字段都写出来。对齐。
在ORACLE的存储过程中,将A表的数据插入到B表中。A,B两个表的数据结构...
Insert into B (字段1,字段2,字段3) select 字段1,字段2,字段3 from A;
怎么样 用Oracle的存储过程 对A表数据按照B数据进行分摊
使用存储过程有点多此一举,你理解一下我下面的SQL:WITH T AS ( SELECT 'A1' AS INV,1 ODR, 43 amt FROM DUALUNION ALL SELECT 'A1' AS INV,2 ODR, 44 amt FROM DUALUNION ALL SELECT 'A1' AS INV,3 ODR, 45 amt FROM DUALUNION ALL SELECT 'A2' AS INV,1 ODR, 60 ...
求oracle存储过程,同时删除两张表中的id相同的数据
手上没有环境,大概说一下我的方法,方法一(不用游标,变量,需要中间表):1.创建临时表(或者创建个表也可以,用一次删一次)即中间表。2.取出两个表相同的ID记录,将ID插入中间表 3.对应中间表中的id,删险两表中的记录。4.清除中间表 方法二(要用游标、变量):1.建立游标,用游标取出两表...
Oracle问题,两张表table_a(key,...)和table_b(no,key1,key2
no是自增的,这点要使用seqence 用存储过程,先把a表key1不等于key2记录放入到游标中,再循环(和seqence.nextval)插入到b表
oracle存储过程,同一张表,根据表里面的日期,计算同比数据。
#temp order by rq select *,ROW_NUMBER() over (order by rq)+1 bz into #temp2 from #temp order by rq select a.rq 本月,a.amount 本月数量,b.amount 同比数量,b.rq 同比日期 from (select * from #temp1 ) a left join (select * from #temp2 ) b on a.bz=b.bz ...