Oracle存储过程问题,写个小存储过程!求帮忙!
在Oracle中创建存取过程问题。题目是这样的:现在有一个表A,现在要创建存储过程proc_A2B,实现:在过程中创一个表B,并将表A中所有记录导入到表B,过程返回一个值...
在Oracle中创建存取过程问题。
题目是这样的:现在有一个表A,现在要创建存储过程proc_A2B,实现:在过程中创一个表B,并将表A中所有记录导入到表B,过程返回一个值,返回导入成功的条数。
大虾来教教我! 现在我在SQL Server中写成功了,就是Oracle中失败
SQL代码:
CREATE proc proc_A2OB
as
begin
set nocount on;
declare @i int;
select * into #B from A;
select @i=COUNT(1) from #B;
print('数据导入成功条数:'+convert(varchar(100),@i));
end;
go
这在Oracle上市绝对不成功的,我这样写:
CREATE OR REPLACE PROCEDURE AINTOB(I OUT INT) IS
BEGIN
EXECUTE IMMEDIATE 'CREATE table B as select * from A';
select count(7) into I from B;
DBMS_OUTPUT.PUT_LINE(I);
EXECUTE IMMEDIATE ' drop table B' ;
END;
这个也错误。。。 谢谢大神了! 展开
题目是这样的:现在有一个表A,现在要创建存储过程proc_A2B,实现:在过程中创一个表B,并将表A中所有记录导入到表B,过程返回一个值,返回导入成功的条数。
大虾来教教我! 现在我在SQL Server中写成功了,就是Oracle中失败
SQL代码:
CREATE proc proc_A2OB
as
begin
set nocount on;
declare @i int;
select * into #B from A;
select @i=COUNT(1) from #B;
print('数据导入成功条数:'+convert(varchar(100),@i));
end;
go
这在Oracle上市绝对不成功的,我这样写:
CREATE OR REPLACE PROCEDURE AINTOB(I OUT INT) IS
BEGIN
EXECUTE IMMEDIATE 'CREATE table B as select * from A';
select count(7) into I from B;
DBMS_OUTPUT.PUT_LINE(I);
EXECUTE IMMEDIATE ' drop table B' ;
END;
这个也错误。。。 谢谢大神了! 展开
3个回答
展开全部
CREATE OR REPLACE PROCEDURE AINTOB(I OUT INT) IS
BEGIN
EXECUTE IMMEDIATE 'CREATE table B as select * from A';
select count(7) into I from B;--B表不存在无法编译通过,将这句也改成 EXECUTE IMMEDIATE 'select count(7) from B' into I
DBMS_OUTPUT.PUT_LINE(I);
EXECUTE IMMEDIATE ' drop table B' ;
END;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create or replace procedure proc_A2B is
i number;
begin
create tableB as
select * from tableA;
selct count(*)
into i from tableA;
dbms_output.put_line(i);
end;--完全实现楼上说的功能。
i number;
begin
create tableB as
select * from tableA;
selct count(*)
into i from tableA;
dbms_output.put_line(i);
end;--完全实现楼上说的功能。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select count(7) into I from B; 你这个肯定要报错的啊,因为你B表根本就不存在,还是用动态sql的写法去写就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询