问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle中的存储过程怎么写

发布网友 发布时间:2022-04-22 02:58

我来回答

1个回答

热心网友 时间:2022-04-07 19:46

Oracle存储过程写法实例

总结项目中写的存储过程例子:
Oracle存储过程基本语法 存储过程
  1 CREATE OR REPLACE PROCEDURE 存储过程名
  2 IS/AS
  3 BEGIN
  4 NULL;
  5 EXCEIPTION;
  6 END;

1、创建存储过程,后面可用is或者as:
create or replace procere PRO_COMPLAIN_TEMPLATE as

2、定义变量,此处用到了%TYPE和%ROWTYPE,参考 /database/201211/168564.html ,另外定义了一个游标,TEM_INSTANCE TEMPLATE_CUR%ROWTYPE这个类型定义必须要在游标定义之后:
NEED_DO_FOR_ZL INTEGER;
CURRENT_MAX_ID MEMO_TEMPLET.TEMPLET_ID%TYPE;
CURSOR TEMPLATE_CUR IS SELECT TEMPLET_NAME, TEMPLET_CONTENT FROM SYS_COMPLAINT_TEMPLET;
TEM_INSTANCE TEMPLATE_CUR%ROWTYPE;
3、begin开始块:
begin

4、该插入语句使用了DBLINK,还有使用DBMS_OUTPUT.put_line('打印信息')进行信息输出:
insert into MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT, TEMPLET_TYPE, TEMPLET_MEMO) (SELECT * FROM MEMO_TEMPLET@COMPANY);

SELECT COUNT(*) INTO NEED_DO_FOR_ZL FROM SYS_COMPLAINT_TEMPLET;
IF(NEED_DO_FOR_ZL > 0) THEN
DBMS_OUTPUT.put_line('打印信息');
SELECT MAX(TEMPLET_ID)+1 INTO CURRENT_MAX_ID FROM MEMO_TEMPLET;
DBMS_OUTPUT.put_line('MEMO_TEMPLET最大ID' || CURRENT_MAX_ID);
FOR TEM_INSTANCE IN TEMPLATE_CUR LOOP
INSERT INTO MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT,
TEMPLET_TYPE, TEMPLET_MEMO) VALUES (CURRENT_MAX_ID,
TEM_INSTANCE.TEMPLET_CONTENT, '7', NULL);
CURRENT_MAX_ID := CURRENT_MAX_ID + 1;
DBMS_OUTPUT.put_line(TEM_INSTANCE.TEMPLET_CONTENT);
END LOOP;
END IF;
COMMIT;
www.2cto.com
4、exception块,使用WHEN OTHERS THEN,其中用raise可显示错误信息:
exception
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('sqlcode : ' ||sqlcode);
raise;
ROLLBACK;
IF TEMPLATE_CUR%ISOPEN THEN
CLOSE TEMPLATE_CUR;
END IF;
DBMS_OUTPUT.put_line('打印信息');
end;

注:关于游标的使用,如果像本例中使用for循环去遍历游标的话则不需要显式的去用open/close
cursor打开和关闭游标,此处会自己处理,如果使用fetch
into的话就需要显式开关游标,另外任意执行一个update操作,用隐式游标sql的属性%found,%notfound,%rowcount,%isopen观察update语句的执行情况,也可以使用来判断游标状态,如IF
TEMPLATE_CUR%ISOPEN THEN。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
发摅解释 摅的组词有哪些 摅字能组哪些词 检测电脑配置的软件电脑硬件检测权威软件有哪几个 查看电脑参数的软件什么软件可以全面检测显示出电脑硬件参数数据_百度... 有没有可以查自己电脑配置的软件啊??? 芯片程序解密哪家好 ...文章怎么突然间阅读量开始大减,从几百掉到个位数。 百家号怎么才个位数播放量?个位数播放量怎么算? 保本收益投资合法吗 路由的rip和静态路由重分发怎么配置啊??我一道两... oracle中的存储过程是什么? 五级地震是什么概念 有多大 锐捷RSR20 怎么设置路由重分发 5级地震有多大威力 Oracle数据库的存储过程怎么写? 花呗关了过一段时间再开额度会变吗? 公交卡让我放洗衣机里洗了,还能用吗? 我想问一下关于配置RIP与OSPF路由重分发 我头一次... 5~6.5级地震能造成多大伤害 ORACLE 存储过程是什么? 它的用处,好处是什么?... 5级地震的破坏力是什么? 路由重分发的基本介绍 花呗关闭后再开通原有额度会变吗? oracle的存储过程? 关闭花呗后以后开通额度还是以前那么多吗 ospf路由重分发 oracle怎么执行存储过程 5级地震有多严重? 路由的重分发 oracle存储过程如何输出信息 5级左右的地震造成的伤害是什么样的啊??危害大吗... 在配置路由重分发时如果同时有RIP OSPF和EIGRP应如... 公交车卡被水浸湿还能用吗? 路由重分发的注意事项 oracle的存储过程的作用 公交卡湿了还能用吗 五级地震会造成怎样的危害 ospf路由重分发的作用 公交车学生卡沾水后可以用吗? 5级地震什么样 怎么才oracle中查看存储过程 公交卡放裤子里没拿出来在洗衣机里泡了,怎么办能... 公交卡用水洗过后还可继续使用吗? oracle存储过程有什么好处? 地震级别是怎么划分的 5级地震震源深度10千米严重吗 oracle存储过程并且怎么写 地震等级是怎么划分的? 如何查看oracle的存储过程