Oracle存储过程学习.doc

Oracle存储过程学习.doc

ID:28099814

大小:196.50 KB

页数:5页

时间:2018-12-08

Oracle存储过程学习.doc_第1页
Oracle存储过程学习.doc_第2页
Oracle存储过程学习.doc_第3页
Oracle存储过程学习.doc_第4页
Oracle存储过程学习.doc_第5页
资源描述:

《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出口

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。