首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle 存储过程札记

2013-03-26 
Oracle 存储过程笔记?写Oracle存储过程习惯用PL/Sql dev,里面有一些模版,我这里也记录一些目前经常使用的

Oracle 存储过程笔记

?

写Oracle存储过程习惯用PL/Sql dev,里面有一些模版,我这里也记录一些目前经常使用的一些:--基本例子
create or replace procedure TestProc as
begin
? for c in (select fieldName from tableName)
? loop
? ? ??dbms_output.put_line(c.fieldName);
? end loop;
endTestProc?;
--带异常处理
create or replace procedure test2 as
--局部变量
? vc varchar2(2048);
begin
? --过程体卸载这里Raise?cust_exception;
? -- 异常处理??
EXCEPTION
? when cust_exception then
?????? dbms_output.put_line('custom exception');
? WHEN OTHERS THEN
??? --回滚
??? ROLLBACK;
??? dbms_output.put_line('Other Errors');
??? RETURN;
??? --END;
end test2;
--匿名过程,常用于临时处理数据
DECLARE
--局部变量l_elem MDSYS.SDO_ELEM_INFO_ARRAY;l_ord MDSYS.SDO_ORDINATE_ARRAY;l_srid NUMBER := 262148; -- Arbritrary X-Y Metersl_gtype NUMBER := 2002; -- 2d Linej NUMBER;x NUMBER;y NUMBER;
BEGIN

l_elem := MDSYS.SDO_ELEM_INFO_ARRAY();l_ord := MDSYS.SDO_ORDINATE_ARRAY();l_elem.EXTEND(3);l_elem(1) := 1;l_elem(2) := 2; -- etype linel_elem(3) := 1; -- interpretation straight segments--for循环for j in 1 .. 1500 LOOP
x := j;
y := mod(j, 2);
l_ord.EXTEND(2);
l_ord(l_ord.LAST - 1) := x;
l_ord(l_ord.LAST) := y;
END LOOP;INSERT INTO SHAPELY (entid, coordinates)values ('BINDVAR', MDSYS.SDO_GEOMETRY(l_gtype, l_srid, NULL,l_elem, l_ord) );
end;
--动态游标,带参数,返回值
create or replace function TestProc(v in varchar2) return varchar2 is
? strSql varchar2(4056);--SQL语句
? type rCursor is ref cursor; --游标类型
? cur rCursor;--定义游标
begin
? --拼装语句
? strSql := 'select field1 from tabName where field2 = ' || v;

? open? cur for strSql;
?
?? LOOP
???? dbms_output.put_line(cur.field1);
?? END LOOP;
?? CLOSE cur; --关闭游标
? return('OK');
end TestProc;
我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html

热点排行