CREATE OR REPLACE PROCEDURE PRC_TEST005 IS
LVD_TIME DATE;
L_USER_EXCEPTION EXCEPTION ;
LVV_TOTAL NUMBER; PROCEDURE PRO_SUB_TEST005 IS
BEGIN
INSERT INTO TES2
(tb3)
values
(LVV_TOTAL) ;
commit;
EXCEPTION
WHEN OTHERS THEN
END; --------
BEGIN--------
BEGIN
SELECT SYSDATE
INTO LVD_TIME
FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
RAISE L_USER_EXCEPTION;
END;---- BEGIN
MERGE INTO TES2
USING TES3
ON ( TES2.TB1 = TES3.TB1)
WHEN MATCHED THEN
UPDATE SET
TES2.TB2 =TES3.TB2
WHEN NOT MATCHED THEN
INSERT (TES2.TB1 , TES2.TB2 )
VALUES (TES3.TB1 , TES3.TB2 );
EXCEPTION
WHEN OTHERS THEN
RAISE L_USER_EXCEPTION;
END; COMMIT;
---- BEGIN
SELECT COUNT(*)
INTO LVV_TOTAL
FROM TES2;
EXCEPTION
WHEN OTHERS THEN
RAISE L_USER_EXCEPTION;
END;---- PRO_SUB_TEST005;--------EXCEPTION
WHEN L_USER_EXCEPTION THEN
ROLLBACK;
WHEN OTHERS THEN
ROLLBACK;
END;
/
请问
1.存储过程PRC_TEST005 里面 写一个 PRO_SUB_TEST005 存储过程 有问题吗?
我在别的地方看到有这么写的,但是我写的总报错!
2.异常抛出问题。
a. WHEN OTHERS THEN 这个 OTHERS 是什么意思?是说随便写一个的?然后这个异常就不管了?
b. RAISE 这是 异常抛出的意思吗?
c. WHEN NO_DATA_FOUND THEN 这里的 NO_DATA_FOUND 是 系统定义好的异常吗?
3.为什么 Oracle 的存储过程中 不能写 SELECT ?
刚看书学的存储过程很多地方不明白,上面的存储过程当中写的怪异的部分还请指正!
LVD_TIME DATE;
L_USER_EXCEPTION EXCEPTION ;
LVV_TOTAL NUMBER; PROCEDURE PRO_SUB_TEST005 IS
BEGIN
INSERT INTO TES2
(tb3)
values
(LVV_TOTAL) ;
commit;
EXCEPTION
WHEN OTHERS THEN
END; --------
BEGIN--------
BEGIN
SELECT SYSDATE
INTO LVD_TIME
FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
RAISE L_USER_EXCEPTION;
END;---- BEGIN
MERGE INTO TES2
USING TES3
ON ( TES2.TB1 = TES3.TB1)
WHEN MATCHED THEN
UPDATE SET
TES2.TB2 =TES3.TB2
WHEN NOT MATCHED THEN
INSERT (TES2.TB1 , TES2.TB2 )
VALUES (TES3.TB1 , TES3.TB2 );
EXCEPTION
WHEN OTHERS THEN
RAISE L_USER_EXCEPTION;
END; COMMIT;
---- BEGIN
SELECT COUNT(*)
INTO LVV_TOTAL
FROM TES2;
EXCEPTION
WHEN OTHERS THEN
RAISE L_USER_EXCEPTION;
END;---- PRO_SUB_TEST005;--------EXCEPTION
WHEN L_USER_EXCEPTION THEN
ROLLBACK;
WHEN OTHERS THEN
ROLLBACK;
END;
/
请问
1.存储过程PRC_TEST005 里面 写一个 PRO_SUB_TEST005 存储过程 有问题吗?
我在别的地方看到有这么写的,但是我写的总报错!
2.异常抛出问题。
a. WHEN OTHERS THEN 这个 OTHERS 是什么意思?是说随便写一个的?然后这个异常就不管了?
b. RAISE 这是 异常抛出的意思吗?
c. WHEN NO_DATA_FOUND THEN 这里的 NO_DATA_FOUND 是 系统定义好的异常吗?
3.为什么 Oracle 的存储过程中 不能写 SELECT ?
刚看书学的存储过程很多地方不明白,上面的存储过程当中写的怪异的部分还请指正!
解决方案 »
- 求助 TNS:监听程序当前无法识别描述中的请求服务
- Oracle占内存的问题!
- 关于SCN的问题
- 新手提问:请问何为“数据ID号”?Sql = "DELETE FROM tabName WHERE id in(" & id & ")"
- 请问,怎样登录到服务器oracle的Oracle Management Server
- 听说安装在P4的机器上要改一些配置是这样么
- 怎么修改clob类型里的内容?
- oracle安装后一般需要执行哪几个脚本,它们的先后顺序有没有规定?
- VC中怎样调用SVRMGRL指令,比如CONNECT INTERNAL/ORACLE ,请给出代码
- oracle恢复问题,求助
- 求助Oracle问题
- 有没有类似round up的函数?
简化一下
CREATE OR REPLACE PROCEDURE PRC_TEST IS
PROCEDURE PRC_SUB_TEST IS
BEGIN
END;
BEGIN
PRC_SUB_TEST ;
END
就是这个格式~~
摆脱高手请出手`~
我在别的地方看到有这么写的,但是我写的总报错!
2.异常抛出问题。
a. WHEN OTHERS THEN 这个 OTHERS 是什么意思?是说随便写一个的?然后这个异常就不管了?
b. RAISE 这是 异常抛出的意思吗?
c. WHEN NO_DATA_FOUND THEN 这里的 NO_DATA_FOUND 是 系统定义楼好的异常吗?
3.为什么 Oracle 的存储过程中 不能写 SELECT ?
楼主要看一下oracle pl/sql开发手册,你的问题都简单
1.没问题,支持这种写法,你说报错应该是语法有问题,还有oralce版本不要太低,哪个版本开始支持的不记不清楚了。
2.oracle有各种预定义异常,对于你没有捕获的异常全部会跳转到when others then下面执行代码
3.过程里面肯定可以写select语句,对于查询出来的结果需要放到变量里面去。
我在别的地方看到有这么写的,但是我写的总报错!
1-->存储过程里面可以写子存储过程的,应该是语法问题。
CREATE OR REPLACE PROCEDURE PRC_TEST IS
PROCEDURE PRC_SUB_TEST IS
BEGIN
END;
BEGIN
PRC_SUB_TEST ;
END
这个貌似没问题。 2.异常抛出问题。
a. WHEN OTHERS THEN 这个 OTHERS 是什么意思?是说随便写一个的?然后这个异常就不管了?
a-->others你可以理解为其他异常的集合,你不知道具体会发生什么异常就用others去捕获。
b. RAISE 这是 异常抛出的意思吗?
b-->RAISE是用以自定义异常抛出是使用。
c. WHEN NO_DATA_FOUND THEN 这里的 NO_DATA_FOUND 是 系统定义好的异常吗?
c-->NO_DATA_FOUND是预定义异常。没错
3.为什么 Oracle 的存储过程中 不能写 SELECT ?
3-->可以用select * into V_value from T_table where...