欢迎投稿

今日深度:

oracle控制语句分享,oracle语句分享

oracle控制语句分享,oracle语句分享


oracle控制语句:

----------IF 语句

if....then

Action code;

elseif...then

Action code;

else

Action code;

end if;

----------loop 循环语句

loop

Action code;

exit when v_num=10;--结束判断,这里举个v_num自增长的例子哈

v_num:=v_num+1;

end loop;

----------while 循环语句

while v_num<=0 loop

Action code;

v_num:=v_num-1;

end loop;

------------还有for循环我就不说啦,自己百度

-------------goto 语句,不建议使用

goto fan_sign;--当执行到这儿时,会跳到这个标记处

......-- 中间代码省略

<>--比如,跳到这儿,可以是从循环中跳到这儿

-------------null,action nothing,read easy

if ......then

Action Code;

else

null;--action nothing

=================================================

--编写过程,在JAVA中返回参数

-- in:表示这是个输入参数,默认为 in

-- out:表示这是个输出参数

create or replace procedure fan_pro

(faNum in number, faName out varchar2) is

begin select emame into faName from mytest where empno=faNum;

end;

--Java Code

CallableStatement cs=ct.prepareCall("{call fan_pro(,)}");

--给第一个赋值

cs.setInt(1,101);

--给第二个赋值,注册一个值

cs.registerOutParameter(2, oracle.jdbc.OracleType.VARCHAR);

cs.execute();//execute

String name=cs.getString(2);//get value,return the second

------------------------------

返回列表,就是返回多个结果

分两部分:1、建一个包,包包含游标

create package testpackage AS

typetest_cursor is ref cursor;

end testpackage;

2、建立过程

create or replace procedure fan_pro

(faNum in number,p_cursor out testpackage.test_cursor) is

begin

open p_cursor for select* from mytest where empno=faNum;

end;

3、在java中调用

CallableStatement cs=ct.prepareCall("{call fan_pro(,)}");

--给第一个赋值

cs.setInt(1,101);

--给第二个赋值,注册一个值

cs.registerOutParameter(2, oracle.jdbc.OracleType.CURSOR);

cs.execute();

ResultSet rs=(ResultSet)cs.getObject(2);

while(rs.next()) {

....(rs.getString(1)+" | "rs.getString(2));//输出

}

//这仅仅是个例子,我再杜撰一个输出结果

fan | fan

fan1 | fan1

fan2 | fan2

-----------case 语句

Action code;

case

when v_num<1000 then

Action Code;

when v_num<2000 then

Action Code;

end case;

------------异常

exception

when case_not_found then//各种内置异常

Action code;

各种异常处理

Access_info_null(ora-06530):当访问没有初始化的对象时触发。

Case_not_found(ora-06592):在case过程中when后没有包含必要的条件分支并且没有else子句,则会触发本异常。

Collection_is_null(ora-06531):访问未初始化的集合元素(嵌套表或者varray)。

Cursor_already_open(ora-06511):重新打开已经打开的游标。

Dup_val_on_index(ora-00001):当中唯一索引所对应的列上键入重复值时。

Invalid_cursor(ora-01001):试图在不合法的游标上执行操作时,譬如没打开游标就提取内容。

Invalid_number(ora-01722):当试图将非法的字符串转换为数字类型时。

No_data_found(ora-01403):执行select into未返回行,或者引用了索引表未初始化的元素时。

Too_many_rows(ora-01422):执行select into返回超过一行数据时。

Zero_pide(ora-01476):0作为被除数时。

Subscript_beyond_count(ora-06533):使用嵌套表或者varray集合时,如果引用下标超过last。

Subscript_outside_limit(ora-06532):使用嵌套表或varray集合时,如果引用下标小于first。

Value_error(ora-06502):在执行赋值操作时,如果变量长度不足以容纳实际数据。

Login_denied(ora-01017):连接数据库时提供了不正确的用户名或口令。

Not_logged_on(ora-01012):在程序没有连接到oracle数据库时执行plsql代码则会触发。

Program_error(ora-06501):plsql内部问题。

Rowtype_mismatch(ora-06504):执行赋值操作时,如果宿主游标变量和PLSQL游标变量返回类型不兼容时。

Self_is_null(ora-30625):使用对象类型时,如果在null实例上调用成员方法。

Storage_error(ora-06500):超出内存空间或者内存被损坏。

Sys_invalid_rowid(ora-01410):无效字符串企图转换为rowid类型时。

Timeout_on_resource(ora-00051):等待资源时出现超时错误。

www.htsjk.Com true http://www.htsjk.com/oracle/24305.html NewsArticle oracle控制语句分享,oracle语句分享 oracle控制语句: ----------IF 语句 if....then Action code; elseif...then Action code; else Action code; end if; ----------loop 循环语句 loop Action code; exit when v_num=10;--结束判断...
评论暂时关闭