存储过程 raise什么意思EXCEPTION when others then rollback; dbms_outp

niccola2022-10-04 11:39:541条回答

存储过程 raise什么意思
EXCEPTION
when others then
rollback;
dbms_output.put_line('code:' || sqlcode);
dbms_output.put_line('errm:' || sqlerrm);
raise;
when others then和raise;
分别是什么意思

已提交,审核后显示!提交回复

共1条回复
早知秋 共回答了26个问题 | 采纳率92.3%
异常分很多种类,如NO_FOUND.others处本应该写异常名称,如果不想把异常分得那麼细,可以笼统一点用others来捕获,即所有异常均用others来捕获.
when others then表示是其它异常.
raise表示抛出异常,让User可以看到.
1年前

相关推荐

写存储过程时候 type cur is ref cursor 这句话
写存储过程时候 type cur is ref cursor 这句话
CREATE OR REPLACE PACKAGE '' AS
type cur is ref cursor
莫伯桑1年前1
axwn8 共回答了13个问题 | 采纳率100%
整体的意思是“创建一个类型变量cur,它引用游标”,除了cur外,其余全是关键字.
TYPE cur:定义类型变量
is ref cursor:相当于数据类型,不过是引用游标的数据类型.
这种变量通常用于存储过程和函数返回结果集时使用,因为PL/SQL不允许存储过程或函数直接返回结果集,但可以返回类型变量,于是引用游标的类型变量作为输出参数或返回值就应运而生了.
oracle 存储过程报错:Error:PLS-00103:出现符号 "ON"在需要下列之一时::= .( @ % ;
oracle 存储过程报错:Error:PLS-00103:出现符号 "ON"在需要下列之一时::= .( @ % ;
procedure ceshi as
begin
dbms_output.put_line('测试用例');
comment on table PRO is '记录表';
end;
无言的树1年前1
tt李梅 共回答了22个问题 | 采纳率86.4%
create or replace procedure ceshi
as
v_sql varchar2(2000);
begin
v_sql:='comment on table PRO is ''记录表''';
execute immediate v_sql;
dbms_output.put_line('测试用例');
end;
存储过程 我有第一个表中有字段A ,B 根据A B的值去查询 第二个表中的某个字段!有谁知道怎么写
存储过程 我有第一个表中有字段A ,B 根据A B的值去查询 第二个表中的某个字段!有谁知道怎么写
如 A字段是日期类型 B字段是人名   根据A字段过滤第二个表的数据,根据B字段确定查询第二个表的哪些字段!
ryokoko1年前1
ganshouchuntian 共回答了16个问题 | 采纳率100%
如果不要求效率的话可以使用
case
when b=1 then '查询D语句 如:select D from 表2'
when b=2 then '查询3'
when b=3 then ‘查询D语句'
...
else
'查询D语句'
end
Informix存储过程题(谁能解决,小弟万分感谢)
Informix存储过程题(谁能解决,小弟万分感谢)
请用存储过程实现,输入一个12位的条码,根据一定的规则返回出完整的13位条码.(用informix实现,输入的参数必须为纯数值)
规则如下:
1.输入的条码必须判断是否为纯数值.可以是012345678912,前面的0不能丢弃.
2.输入的条码必须为12位.
3 将12位条码的奇偶数分别相加相加,即奇数位相加0+2+4+6+8+1,偶数位相加1+3+5+7+9+2
4 相加后将偶数位之和乘以3.(1+3+5+7+9+2)*3
5 最后将奇偶数之和相加.
6 此用10-奇偶数位之和的最后一位,例如最后将奇偶数之和相加的结果是11,则用10-1=9,如果最后一位是0则第13位为0.
7 最后将前面输入的12条码加上第计算出来的第十三位拼接起来,返回一个完整的条码.
超爱丁丁1年前1
华藏慧莲 共回答了19个问题 | 采纳率94.7%
其实写逻辑的话并不难,主要是对新的语言和开发环境的陌生
不如看看下边的informix存储过程的语法,学
写逻辑的话就是程序员的基本功了,掌握了语法,只要思路清晰,无论是什么语言什么环境都不会太难
SQL执行存储过程设在SQL Server2000中某数据库定义了一个存储过程,其头部定义如下:CREATE PROC
SQL执行存储过程
设在SQL Server2000中某数据库定义了一个存储过程,其头部定义如下:
CREATE PROC P1
@X INT=10,@Y INT=100,@Z CHAR(3)='ABC'
AS........
下列调用该存储过程的语句中,不能正确执行的是:
A.) EXEC P1
B.) EXEC P1 DEFAULT,200,'XXX'
C.) EXEC P1 200
D.) EXEC P1 'XXX'
答案选的C,那为什么D不对?
ymsquall1年前1
bk3k2 共回答了16个问题 | 采纳率75%
答案错了,选D,因为不指定参数名称的话默认参数是按声明顺序来的
'xxx'是字符串,赋值给int型会报错
ORA-01031:权限不足我用scott用户创建了一个存储过程,创建成功后我调用改存储过程,就提示我权限不足,是怎么回
ORA-01031:权限不足
我用scott用户创建了一个存储过程,创建成功后我调用改存储过程,就提示我权限不足,是怎么回事锕 ,有谁帮解决一下下锕
我的存储过程如下:
create or replace procedure xu_create is
v_a varchar2(20):='&输入表名称';
v_b varchar2(20):='&输入表的字段';
v_c varchar2(20):='&输入表的字段';
v_sql varchar2(2000);
begin
v_sql:='create table '||v_a||'('||v_b||' varchar2(20),'||v_c||' varchar2(20))';
execute immediate v_sql;
commit;
之后我调用call xu_create();
就出现了这个权限不足的错误,补充一点,我以sys登录的时候,是可以调用的
我也试着个scott授权,GRANT CREATE ANY sequence TO scott;之后还是出现那个错误,怎么回事?
(另外我感觉应该不需要给scott授权的阿,默认scott用户就应该可以创建表的啊)
end;
对,就是啊,GRANT CREATE ANY sequence TO scott这句话是在别的地方copy过来的看都没有看,,不过我还不明白为啥 scott还用授权呢 ,我们即使不授权照样可以在scott用户下创建表啊,为啥一旦用到存储过程中去的时候就得要授权呢.
521bobo1年前1
乔小咪 共回答了16个问题 | 采纳率68.8%
GRANT create any table TO scott;
sequence 是序列,你试着给它创建序列的权限有毛用啊,你的存储过程里是要创建表啊.
哈,没研究过这么深,只不过这么用久了,就习惯这么用了.遗憾,你可以去查一些存储过程的教程,那上边一般会有这些基础知识.我只是会用而已.