Fosdccf.blog.chinaunix.net
sdccf
全部博文(19283)
Linux酷软(214)
tmp(0)
PostgreSQL(93)
Solaris(383)
AIX(173)
SCOUNIX(575)
DB2(1005)
Shell(386)
C/C++(1187)
MySQL(1750)
Sybase(465)
Oracle(3695)
Informix(548)
HP-UX(0)
IBM AIX(2)
Sun Solaris(0)
BSD(1)
Linux(8597)
SCO UNIX(23)
2011年(1)
2009年(125)
2008年(19094)
2007年(63)
clifford
linky521
曾德标
fengzhan
leon_yu
mcuflowe
yt200902
guanyuji
GY123456
snow888
carlos94
丸喵喵
sean229
cxunix
可怜的猪
cqxc413
xzzgege
wb123456
分类: Oracle
2008-04-30 18:37:56
1.块结构:PL/SQL程序被分割为称为块(block)的结构,块中包含PL/SQL程序语句。典型的PL/SQL块具有以下的结构:[DECLARE declaration_statements ]BEGIN executable_statements[EXCEPTION exception_handling_statements]END;语法元素:declaration_statement : 声明了在块的其余部分中使用的变量。这些变量是块的局部变量。executable_statment: 块的实际可执行语句。exeception_handling_statement: 处理可执行语句可能发生的错误。注意:每条语句都要有(;)分号结尾,块使用END关键字结尾。例程:DECLARE width INTEGER :=2; height INTEGER ; area INTEGER ;BEGIN height :=3 ; area :=width*height ; DBMS_OUTPUT.PUT_LINE('Area='||area); //表示在屏幕上显示;END;/ //表示执行这个PL/SQL块;注意:必须在SQL*PLUS中提前输入:SET SERVEROUTPUT ON 才能显示的输出。2.变量类型:变量名 变量类型 ;/ : = [初始数值] ; id INTEGER ;name VARCHAR2(20) :='BinMing'; * proname product.price%TYPE ; // (%TYPE) 表示proname 的类型要和product表中的price的类型一致。3.条件逻辑:1.IF [条件1] THEN [语句段]; ELSEIF [条件2] THEN ... END IF ;2.循环(简单循环/WHILE/FOR) 单循环:LOOP statementsEND LOOP;//一直循环语句段,除非显示的输入EXIT / EXIT WHEN 语句结束循环 WHILE循环:WHILE condition LOOP statementsEND LOOP;example: count:=0; WHILE counter<6 LOOP count :=count + 1 ; END LOOP ;3.FOR循环:FOR loop_variable IN [REVERSE] lower_bound..upper_bound LOOP statements;END LOOP;example: FOR id IN 3..6 LOOP DBMS_OUTPUT.PUT_LINE(id); END LOOP;4.游标的使用:步骤一: 声明变量来存储例值 :DECLARE id products.id%TYPE; ...... ......步骤二: 声明游标 :游标要放在声明部分中。CURSOR product_cursor IS SELECT id,name,price FROM products ORDER BY id; //声明了游标的类型或着说方法步骤三:打开游标 :使用OPEN语句打开游标,必须放在块的可执行部分中。 OPEN product_cursor ;步骤四: 从游标中获取行:使用 FETCH 语句读取游标中的行: FETCH: product_cursor; INTO id,name,price; //把值存储到上面声明的三个变量中.// 如果游标返回可能包含很多行的话,就要循环取出每一行数据, 可以使用product_cursor%NOTFOUND决定虚幻何时结束。步骤五: 关闭游标:CLOSE product_cursor;5.过程: 使用PL/SQL创建包含一组SQL语句和PL/SQL语句的过程。 可以使用这些过程将业务逻辑集中在数据库中,访问数据 库的任何程序都可以使用这些过程。 使用CREATE PROCEDURE 语句创建PL/SQL过程:CREATE[OR REPLACE] PROCEDURE procedure_name //过程名字[(parameter_name)[IN|OUT|IN OUT] type[, ...])] //过程使用的参数{IS|AS}{ body};.IN 参数的默认模式。如果在过程运行时参数以有一个值,而且这个值在过程体中不能修改, 那么就应该指定这种模式。.OUT 如果参数的值只在过程体中设置,那么就应该指定这种模式。.IN OUT 如果在过程被调用时参数可能已经有一个值,但是这个值可以在过程体中修改,那么就应该指定这种模式。例子程序:CREATE PROCEDURE update_product_price( p_product_id IN products.id%TYPE ; p_factor IN NUMBER ; ) AS product_count INTEGER ; BEGIN SELECT COUNT(*) INTO product_count FROM products WHERE id = p_product_id; IF product_count = 1 THEN UPDATE products SET price = price * p_factor ; COMMIT ; END IF ; END update_product_price ; /
原文:http://clsoftprog.blog.ccidnet.com/blog-htm-do-showone-uid-39904-type-blog-itemid-113990.html
上一篇:Oracle9i的物理内存管理
下一篇:Oracle PL/SQL语言基础
登录 注册