PL/SQL带参数的过程

PL/SQL带参数的过程小例子:

in 参数:读入参数,主程序向过程传递参数值;

out参数:读出参数,过程向主程序传递参数值;

in out参数:双向参数.主程序与过程双向交流数据;

sql 代码
  1. Set  serveroutput on  
  2. create or replace procedure scott.tempprocedure(   
  3.    tempdeptno in scott.dept.deptno%type,   
  4.    tempdname out scott.dept.dname%type,   
  5.    temploc in out scott.dept.loc%type)as  
  6.    loc1   scott.dept.loc%type;   
  7.    dname1 scott.dept.dname%type;   
  8. begin  
  9.    select loc  into loc1   
  10.    from  scott.dept   
  11.    where  deptno=tempdeptno;   
  12.    select dname  into dname1   
  13.    from  scott.dept   
  14.    where  deptno=tempdeptno;   
  15.    temploc:='地址:'||loc1;   
  16.    tempdname:='姓名'||dname1;   
  17. end;  

主程序调用代码:

sql 代码
  1. set serveroutput on  
  2. declare    
  3.    myno  scott.dept.deptno%type;   
  4.    mydname  scott.dept.dname%type;   
  5.    myloc  scott.dept.loc%type;   
  6. begin  
  7.   myno:=10;   
  8.   mydname:='崔映辉';   
  9.   myloc:='上海信息产业集团';   
  10.   scott.tempprocedure(myno,mydname,myloc);   
  11.   dbms_output.put_line(myno);   
  12.   dbms_output.put_line(mydname);   
  13.   dbms_output.put_line(myloc);   
  14. end;   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在《算法+数据结构=程序》一书,Niklaus Wirth 设计的 PL/0 语言编译器分成两部分,把源语言翻译成间语言的编译器和间语言解释器,编译器用的是递归下降的预测分析方法间语言是一种栈机器代码,其指令集是根据 PL/0 语言的需要来设计的。编译器源码及测试程序可从。一条指令由三个域组成: (1)操作码 f:上面已经列出了所有 8 种操作码。 (2)层次差 l:这里的层次差就是 5.3.2 节介绍嵌套深度时的 n p − n a 。该域仅用于存取指令和调用指令。 (3)多用途 a:在运算指令,a 的值用来区分不同的运算;在其他情况,a 或是一个数(lit,int),或是一个程序地址(jmp,jpc,cal),或是一个数据地址(lod,sto)。 编译器对 PL/0 源程序进行一遍扫描,并逐行输出源程序。在源程序无错的情况下,编译器每编译完一个分程序,就列出该分程序的代码,这由编译器的 listcode 过程完成。每个分程序的第一条指令是 jmp 指令,其作用是绕过该分程序声明部分产生的代码(即绕过内嵌过程的代码)。listcode 过程没有列出这条代码。 解释器是编译器的一个过程,若源程序无错,则编译结束时调用解释过程 interpret。由于 PL/0 语言没有输出语句,解释器按执行次序,每遇到对变量赋值时就输出该值。 由于 PL/0 语言是过程嵌套语言,因此程序运行时,活动记录栈每个活动记录需要包含控制链和访问。活动记录栈的栈顶以外的存储空间作为代码执行过程所需要的计算栈,无需另外设立计算栈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值