Oracle存储过程学习.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle存储过程学习

Oracle存储过程学习   大家都知道存储过程的开头语句是CREATE OR REPLACE PROCEDURE (VAR in type,VAR out type, .....) AS | IS 但从变量申明开始变量类型有哪些? BEGIN后逻辑语句有哪些,我就记不清楚了。 这里先给个简单的栗子 1 2 3 4 5 6 7 8 9 10 11 12 CREATE?OR?REPLACE?PROCEDURE?OUTPUTINFO?AS ??I?NUMBER(10);?--在这里申明变量I BEGIN ??I?:=?0;?--申明变量I的值为0 ??WHILE?I?=?10?LOOP ????--这里使用了WHILE循环? ????BEGIN ??????I?:=?I?+?1; ????END; ????DBMS_OUTPUT.PUT_LINE(I);?--发现该句放在BEGIN,END结构内外,结果一样? ??END?LOOP; END?OUTPUTINFO; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SQL?SET?SERVEROUTPUT?ON SQL?EXEC?OUTPUTINFO; 1 2 3 4 5 6 7 8 9 10 11 PL/SQL?PROCEDURE?SUCCESSFULLY?COMPLETED. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE?OR?REPLACE?PROCEDURE?TBS?AS ??TB????VARCHAR2(15); ??TBN???NUMBER(10)?DEFAULT?1; ??V_SQL?VARCHAR2(2000); ??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?||?TBN; ????TBN???:=?TBN?+?1; ????V_SQL?:=?SELECT?COUNT(*)?FROM??||?TB; ????EXECUTE?IMMEDIATE?V_SQL ??????INTO?CNT; ????IF?CNT??1?THEN ??????DBMS_OUTPUT.PUT_LINE(TBD?||???||?TBN?||???||?CNT); ????END?IF; ??END?LOOP; END; 今天写作业,一个简单的过程,犯了个简单的逻辑错误,输出的时候使用的变量是V_SQL,导致结果总是SELECT语句而非语句执行的结果。 1 2 3 4 5 6 7 8 9 CREATE?OR?REPLACE?PROCEDURE?MALE_AVG_SALARY?AS ??V_SQL???VARCHAR2(2000); ??RESULTS?NUMBER(10); BEGIN ??V_SQL?:=?SELECT?AVG(SALARY)?FROM?EMPLOYEES?WHERE?EMPLOYEESEX=?|| ???????????M?||??GROUP?BY?EMPLOYEESEX; ??EXECUTE?IMMEDIATE?V_SQL; ??DBMS_OUTPUT.PUT_LINE(V_SQL); END; 今天的作业继续头大,不过参考了业务库上的过程,对过程调用有了进一步的认识: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 显示的开启游标 CREATE?OR?REPLACE?PROCEDURE?EMPLOYEE_SALARY(GENTEE?IN?VARCHAR2)?AS ??CURSOR?CUR?IS ????SELECT?FIRST_NAME?||?LAST_NAME?EMPLOYEE_NAME,?SALARY ??????FROM?EMPLOYEES ?????WHERE?EMPLOYEESEX?=?GENTEE; ??R?EMPLOYEES?%?ROWTYPE; BEGIN ??FOR?R?IN?CUR?LOOP ????BEGIN ??????DBMS_OUTPUT.PUT_LINE(EMPLOYEE_NAME:??||?R.EMPLOYEE_NAME?|| ????????????????????????????EMPLOYEE_SALARY:??||?R.S

文档评论(0)

duyingjie1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档