初识PLSQL 几个简单的小程序

1.顺序程序代码

declare

V_counter number:=1;

begin

loop

dbms_output.put_line('V_counter当前的值为:'||V_counter);

V_counter:=V_counter+1;

if V_counter=13 then 循环到13 就结束语句

goto endofloop;

end if;

end loop;

<<endofloop>>

dbms_output.put_line('V_counter当前的值为:'||V_counter);

end;

/

 

 运行结果

SQL> start c:/mysql3.txt

V_counter当前的值为:1

V_counter当前的值为:2

V_counter当前的值为:3

V_counter当前的值为:4

V_counter当前的值为:5

V_counter当前的值为:6

V_counter当前的值为:7

V_counter当前的值为:8

V_counter当前的值为:9

V_counter当前的值为:10

V_counter当前的值为:11

V_counter当前的值为:12

V_counter当前的值为:13

PL/SQL 过程已成功完成。

 

2.分支程序代码

 declare

num number := &num;

begin

if num then

dbms_output.put_line('你已输入数字1');

elsif num then

dbms_output.put_line('你已输入数字2');

elsif num then

dbms_output.put_line('你已输入数字3');

else

dbms_output.put_line('输入错误');

end if;

end;

/

 

 运行结果

 SQL> edit c:/myplsql2.txt

SQL> c:/myplsql2.txt

输入 num 的值 1

原值    2:      num number := &num;

新值    2:      num number := 1;

你已输入数字1

PL/SQL 过程已成功完成。

SQL>

 

3.循环程序代码

 declare

num number := 1;

begin

dbms_output.put_line('循环开始');

loop

if num>5 then

exit;

end if;

dbms_output.put_line('循环第'||num||'');

num:=num+1;

end loop;

dbms_output.put_line('循环结束');

end;

/

 

 运行结果

SQL> c:/mysqlloop.txt

循环开始

循环第1

循环第2

循环第3

循环第4

循环第5

循环结束

PL/SQL 过程已成功完成。

 

收获问题:

(1)设置输出结果显示在屏幕上 set serveroutput on

(2)声明变量: 变量名 数据类型:=值

(3)输出函数:dbms_output.put_line()

(4)if语句格式:

if 条件 then

具体内容:

end if;

(5)loop 循环格式

  loop 

  内容;

  end loop;

(6)连接符 "||"类似java中的"+"

(7)goto语句格式:

  goto 标签名;

  <<标签名>>

(8)定义变量,但不赋值,例如:num number := &num;

(9)跳出循环,exit;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
program PL0 (input,output); (*PL/0 compiler with code generation*) (*Program 5.6 in Algorithms + Data Structures = Programs*) (*Almost identical with the version in Compilerbau*) (*Author: Niklaus Wirth*) label 99; (*定义标号*) const (*定义常量*) norw = 11; (*保留字最大长度*) txmax = 100; (*符号表最大记录数*) nmax = 14; (*数值型数据所含字符的最大长度*) al = 10; (*标识符最大长度*) amax = 2047; (*最大地址*) levmax = 3; (*分程序最大递归深度*) cxmax = 200; (*目标代码数组大小*) type (*定义类型*) symbol = (nul,ident,number,plus,minus,times,slash,oddsym, eql,neq,lss,leq,gtr,geq,lparen,rparen,comma,semicolon, period,becomes,beginsym,endsym,ifsym,thensym, whilesym,dosym,callsym,constsym,varsym,procsym); (*单词符号机内表示*) alfa = packed array[1..al] of char; (*标识符类型*) object = (constant,variable,procedure); (*类型标识符*) symset = set of symbol; (*式后字集合类型*) fct = (lit,opr,lod,sto,cal,int,jmp,jpc); (*目标代码中的操作码类型*) instruction = packed record f: fct; (*操作码*) l: 0..levmax; (*层差*) a: 0..amax; (*相对地址*) end; (* lit 0,a: 取常量a opr 0,a: 执行a 运算 lod l,a: 取变量(相对地址为a ,层差为l) sto l,a: 存变量 (相对地址为a ,层差为l) cal l,a: 调用过程(入口地址为a ,层差为l) int 0,a: 运行栈S 的指针值增加 a jmp 0,a: 转移到指令地址a 处 jpc 0,a: 条件转移到指令地址a 处*) var ch: char; (*当前字符*) sym: symbol; (*当前单词符号*) id: alfa; (*当前标识符*) num: integer;(*当前数*) cc: integer; (*行字符计数*) ll: integer; (*行长*) kk,err: integer; cx: integer; (*目标代码存放数组下标*) line: array[1..81] of char; (*行缓冲区*) a: alfa; code: array[0..cxmax] of instruction; (*目标代码区*) word: array[1..norw] of alfa; (*保留字表*) wsym: array[1..norw] of symbol; (*保留字机内表示表*) ssym: array[char] of symbol; (*运算符、界限符机内表示表*) mnemonic: array[fct] of packed array[1..5] of char; declbegsys,statbegsys,facbegsys: symset; table: array[0..txmax] of record name: alfa; case kind: object of constant: (val: integer); variable,procedure: (level,adr: integer) end; (*符号表*) procedure error(n: integer); (*报错程序*) begin writeln('****',' ':cc-1,'^',n:2); err:= err+1 end; (*error*)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值