PL SQL存储过程执行问题

lihuaping693 2012-04-16 10:29:11
刚接触ORACLE,,问个很菜鸟的问题,谢谢大家了。。。

create or replace procedure SPA Is
begin

DELETE FROM NAME;

INSERT INTO NAME VALUE(A,B,C,D)
SELECT A,B,C,D FROM NAME2;

end SPA;

按F8提示编译成功。怎么能像SQL SERVER里一样执行出结果集啊
还有就是在SQL窗口中执行 EXEC SPA; 报错:SQL语句无效

但是将语句直接拿出来再SQL窗口中执行又是成功的。。

郁闷中。。
...全文
206 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssqtjffcu 2012-04-16
  • 打赏
  • 举报
回复

create or replace procedure SPA Is
begin

DELETE FROM NAME;
INSERT INTO NAME(A, B, C, D) --去掉value
SELECT A, B, C, D FROM NAME2;
COMMIT; --忘了commit;
end SPA;
Phoenix_99 2012-04-16
  • 打赏
  • 举报
回复
create or replace procedure spa is
begin
delete from name;
insert into name select * from name2;
end spa;


应该是没有问题的
APHY 2012-04-16
  • 打赏
  • 举报
回复
1、在命令窗口里面execute SPA();
2、在SQL窗口里面就要写块:
begin
SPA;
end;
lihuaping693 2012-04-16
  • 打赏
  • 举报
回复
谢谢啊,我试了下,
还是不太懂,
我把
DELETE FROM NAME;

INSERT INTO NAME VALUE(A,B,C,D)
SELECT A,B,C,D FROM NAME2;

放在command window里面执行还是有问题,

执行EXEC SPA;也还是有问题

yinan9 2012-04-16
  • 打赏
  • 举报
回复
不好意思 没仔细看
楼主这里的select是没有问题的
yinan9 2012-04-16
  • 打赏
  • 举报
回复
1,PL SQL 语句块无法像SQL一样返回结果集。但是可以通过DBMS_OUTPUT包打印出来。
2,如果需要执行存储过程,你需要在command window里面执行,或者放在PL/SQL 语句语句块里面
3,楼主贴出来的代码是有问题的, PL SQL中的 select后面必须要有into连接,来接受返回值

http://topic.csdn.net/u/20100113/15/24EF20C3-65B9-4B50-A0AA-D6A188B54BDA.html
附上pl sql 教程,入门很简单,楼主先耐心学习下吧。
---涛声依旧--- 2012-04-16
  • 打赏
  • 举报
回复
如果封装在包时的,执行时还要加上包名,如:
BEGIN
PKG_ATT.SP_Attendance;
END;
lihuaping693 2012-04-16
  • 打赏
  • 举报
回复
1、在命令窗口里面execute SPA(); ----这个还是没执行出来
2、在SQL窗口里面就要写块: ----按这种方法OK了,
begin
SPA;
end;

谢谢大家啊!

forgetsam 2012-04-16
  • 打赏
  • 举报
回复
你这是insert 语句你要什么结果集?
kaka30 2012-04-16
  • 打赏
  • 举报
回复
command窗口和SQL窗口有所不同的
Rotel-刘志东 2012-04-16
  • 打赏
  • 举报
回复
语句是没有任何问题没有commit原因。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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