pl/sql 创建并执行oralce存储过程,并返回结果集

来源:互联网 发布:js实现图片3d效果轮播 编辑:程序博客网 时间:2024/05/20 09:22

因为以前一直用sql server多,现在一下子用oracle ,工具什么都不熟,局限于sql server的思想 

网上搜,和问朋友,跟我讲了一大堆,什么loop 啊,decalre啊,package啊,什么命令窗口啊,什么 sql plus啊,什么不支持pl/sql啊.耽误了好几个小时..完全都是在误导人,其实什么都不需要。

 

问题:编译后错误提示为pls-00103:出现符号""在需要下列之一时:begin case declare

肉眼看不到的,有可能是全角的空格,因为是从别处复制的代码,可能有非法字符,删除了重新写一遍就可以了!

只需要定义一个结果集,把东西存到结果集中就结束(这个结果集叫做游标),先创建存储过程:

[plain] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. create or replace procedure Demo(data out sys_refcursor) is  
  2. begin  
  3.   open data for select * from gsminfo;  
  4. end Demo;  

然后直接执行就OK ,执行的方法如下:

找到存储过程,右键,选择测试:




然后出现的页面,再选择点击运行:



然后直接看结果集就可以了,注意了,oracle pl/sql这个工具,存储过程的结果集做的很不人性化,比起sql server差了很多,结果集在一个很隐蔽的地方,如图所示,点开即可




      存储过程
  所用函数说明
  功能:求和与差
  原形:GetSumAndSub(p1 in number , p2 in number ,m out number , b out number) 
  参数:m=p1+p2 b=p1-p2
   
  1.先建存储过程 
  左边的浏览窗口选择 procedures ,会列出所有的存储过程,右击文件夹procedures单击菜单“new",弹出
   
  template wizard窗口, name框中输入 GetSumAndSub ,parameters中填入: p1 in number , p2 in number ,m 
   
  out number , b out number 。单击ok,右边出现建立存储过程的代码窗口。其中内容为创建存储过程的语句。在begin end 之间输入具体内容,最后如下;
  create or replace procedure GetSumAndSub(p1 in number , p2 in number ,m out number , b out 
   
  number) is
  begin
    m := p1+p2 ;
    b := p1-p2 ;
  end GetSumAndSub;
  单击“保存”按钮,可将创建存储过程的sql语句保存在文件中,作备分之用^_^接着要做的就是 执行此sql语句来创建存储过程。方法为:找到工具栏上的“齿轮”图标,鼠标放上面会显示
   
  ‘EXECUTE(F8)',单击之。存储过程此时已经建立完毕。可为什么我在右边的procedures文件夹下看不到此存储过程?刷新一下ok~
   
  2。测试存储过程
  在左边的浏览窗口选中 GetSumAndSub该存储过程,右击选菜单“TEST‘,右边会出现新的测试窗口。
   
  说明:在测试窗口的下面你可以看到有一个参数列表,作输入参数值和查看out型参数值用在调试代码上方有个工具条:
    第一个放大镜形(start debugger),开始调试。
    第二个绿色三角形(run),执行。
    第三个step into ,单步调试。
    进入调试代码窗口后,可随意设置断点,方法就不用说了吧~
   
  a 我们要在参数窗口中输入 两个参数值, p1为6,p2为4, m跟b不用填。
  b 点击start debugger,进入存储过程的代码窗口
  c 点击step into ,将鼠标放在变量符号上可查看变量值
  d 继续点击step into 直到单步运行完毕。此时会返回测试窗口。
  e 查看参数列表,验证m,b值为8,4。
   
  在测试窗口点击保存,可保存测试代码。以后重新打开时,你原先输入的那些参数值会保存在其中,免得每次测试都要重新输参数值。
  对于返回类型为游标的参数,数据不会直接显示,在列表的参数值框右边会有一个按扭,点击之,会弹出一个

 

     3、Oracle中调用存储过程

DECLARE
  p1 VARCHAR2(100);
  p2 VARCHAR2(100);
  p3 VARCHAR2(100);
BEGIN
  p1:='dd';
  p2:='3';
  testprocedure(p1,p2,'');
END;

文章转载自网管网:http://www.bitscn.com/pdb/oracle/200604/17096.html

             

0 0