资源描述:
《Oracle存储过程学习.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Oracle存储过程学习 大家都知道存储过程的开头语句是CREATEORREPLACEPROCEDURE(VARintype,VARouttype,.....)AS
2、IS但从变量申明开始变量类型有哪些?BEGIN后逻辑语句有哪些,我就记不清楚了。这里先给个简单的栗子123456789101112CREATE OR REPLACE PROCEDURE OUTPUTINFO AS I NUMBER(10); --在这里申明变量IBEGIN I := 0; --申明变量I的值为0 WHILE I <= 1
3、0 LOOP --这里使用了WHILE循环 BEGIN I := I + 1; END; DBMS_OUTPUT.PUT_LINE(I); --发现该句放在BEGIN,END结构内外,结果一样? END LOOP;END OUTPUTINFO;1234567891011121314SQL> SET SERVEROUTPUT ONSQL> EXEC OUTPUTINFO;1234567891011PL/SQL PROCEDURE SUCCESSFULLY COMPLETE
4、D. 今天尝试继续写,发现当表名是变量时是过程是无法编译成功的。经过网上的查找和反复的测试才写成这么简单的一句1234CREATE OR REPLACE PROCEDURE TBS AS TB VARCHAR2(15); TBN NUMBER(10) DEFAULT 1; V_SQL VARCHAR2(2000);江苏万和计算机培训中心地址:南京市中山北路26号新晨国际大厦24层(地铁鼓楼站4A出口)官方网站:http://www.wanho.net567891011121314151617
5、1819 CNT NUMBER(10); TBD DATE;BEGIN TBD := TO_DATE('2013/12/31 23:59:59', 'YYYY/MM/DD HH24:MI:SS'); WHILE (TBN <= 11) LOOP TB := 'TBILLLOG'
6、
7、 TBN; TBN := TBN + 1; V_SQL := 'SELECT COUNT(*) FROM '
8、
9、 TB; EXECUTE IMMEDIATE V_SQL
10、 INTO CNT; IF CNT > 1 THEN DBMS_OUTPUT.PUT_LINE(TBD
11、
12、 ' '
13、
14、 TBN
15、
16、 ' '
17、
18、 CNT); END IF; END LOOP;END;今天写作业,一个简单的过程,犯了个简单的逻辑错误,输出的时候使用的变量是V_SQL,导致结果总是SELECT语句而非语句执行的结果。123456789CREATE OR REPLACE PROCEDURE MALE_AVG_SALARY AS V_SQL VARCHAR2(
19、2000); RESULTS NUMBER(10);BEGIN V_SQL := 'SELECT AVG(SALARY) FROM EMPLOYEES WHERE EMPLOYEESEX='
20、
21、 '''M'''
22、
23、 ' GROUP BY EMPLOYEESEX'; EXECUTE IMMEDIATE V_SQL; DBMS_OUTPUT.PUT_LINE(V_SQL);END;今天的作业继续头大,不过参考了业务库上的过程,对过程调用有了进一步的认识:1234567891011
24、12显示的开启游标CREATE OR REPLACE PROCEDURE EMPLOYEE_SALARY(GENTEE IN VARCHAR2) AS CURSOR CUR IS SELECT FIRST_NAME
25、
26、 LAST_NAME EMPLOYEE_NAME, SALARY FROM EMPLOYEES WHERE EMPLOYEESEX = GENTEE; R EMPLOYEES % ROWTYPE;BEGIN FOR R IN CUR LOOP BEGIN
27、 DBMS_OUTPUT.PUT_LINE('EMPLOYEE_NAME: '
28、
29、 R.EMPLOYEE_NAME
30、
31、 ' EMPLOYEE_SALARY: '
32、
33、 R.SALARY); END; END LOOP;END EMPLOYEE_SALARY;江苏万和计算机培训中心地址:南京市中山北路26号新晨国际大厦24层(地铁鼓楼站4A出口