日期:2014-05-17  浏览次数:20792 次

PL SQL存储过程执行问题
刚接触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窗口中执行又是成功的。。

郁闷中。。

------解决方案--------------------
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 教程,入门很简单,楼主先耐心学习下吧。
------解决方案--------------------
1、在命令窗口里面execute SPA();
2、在SQL窗口里面就要写块:
begin
SPA;
end;
------解决方案--------------------
create or replace procedure spa is
begin
delete from name;
insert into name select * from name2;
end spa;


应该是没有问题的
------解决方案--------------------
SQL code

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;

------解决方案--------------------
语句是没有任何问题没有commit原因。
------解决方案--------------------
command窗口和SQL窗口有所不同的
------解决方案--------------------
你这是insert 语句你要什么结果集?
------解决方案--------------------
如果封装在包时的,执行时还要加上包名,如:
BEGIN
PKG_ATT.SP_Attendance;
END;