向各位高手请教一个问题 ORACLE存储过程建多个表的问题,执行完后只建成了一个表。。。

代码如下:CREATEORREPLACEPROCEDUREdayfresh(on_flagOUTNUMBER,out_reasonOUTVARCHAR2)isvsqlva... 代码如下:
CREATE OR REPLACE PROCEDURE dayfresh(
on_flag OUT NUMBER,
out_reason OUT VARCHAR2) is
vsql varchar2(4000);
begin
vsql := 'create table '||'DW_V_USER_GPRS_DAILY_0'||to_char(sysdate,'yyyymmdd')||
' as select * from sjck.DW_V_USER_GPRS_DAILY_775@new_hnstat';
execute immediate vsql;
commit;

vsql := 'create table '||'ODS_BUSI_CUSTOMER_0'||to_char(sysdate,'yyyymmdd')||
'as select * from sjck.ODS_BUSI_CUSTOMER_775@new_hnstat ';
execute immediate vsql;
commit;

EXCEPTION
WHEN OTHERS THEN
on_flag := SQLCODE;
out_reason := SUBSTR(SQLERRM, 1, 255);
ROLLBACK;
END;
展开
 我来答
wolichangnan
2011-08-29 · TA获得超过207个赞
知道答主
回答量:80
采纳率:100%
帮助的人:84.3万
展开全部
有个地方少了个空格,在你连接的时候字符串连接在一起了,oracle识别不出来,第二个vsql
vsql := 'create table '||'ODS_BUSI_CUSTOMER_0'||to_char(sysdate,'yyyymmdd')||
'as select * from sjck.ODS_BUSI_CUSTOMER_775@new_hnstat ';

'as select * from sjck.ODS_BUSI_CUSTOMER_775@new_hnstat ';
这行第一个引号前面加个空格
' as select * from sjck.ODS_BUSI_CUSTOMER_775@new_hnstat ';
就行了
那个commit 和rollback可以去掉,没有用,create是DDL语句,是自动提交的。
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
归海香柏
2011-08-29 · TA获得超过165个赞
知道答主
回答量:174
采纳率:100%
帮助的人:99.4万
展开全部
B表结构和A表一致
create table B as select * from A

或者你B表已经先建好了
insert into B (select * from A)

insert into B(字段1,字段2,...) (select 字段1,字段2,... from A)
追问
第二个表和第一个表字段内容都不一样的呀,你说的方法能用吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萌友租房
2011-08-29
知道答主
回答量:67
采纳率:0%
帮助的人:35.4万
展开全部
确实存在空格的问题,但是两个建表的语句不管是对是错,格式是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式