Oracle存储过程基础内容
1?基本语法1.1?无参无变量create or replace procedure?firstPro as begin dbms_output.put_line(‘hello word,my name is stored procedure‘); end; 里面只有一个输出语句 调用 begin firstPro(); end; 1.2?无参有变量create or replace procedure?myDemo02 as name varchar(10); age int; begin name:=‘xiaoming‘; age:=18; dbms_output.put_line(‘name=‘||name||‘,age=‘||age); end; 在as中声明变量,在begin中赋值,输出时通过||符号达到连接字符串的功能 1.3?有参入门create or replace procedure?myDemo03(name in?varchar,age in?int) as begin dbms_output.put_line(‘name=‘||name||‘,age=‘||age); end; 调用时再赋值 begin ??myDemo03(‘xiaoming‘,18); end; 1.4?形参实参create or replace procedure?myDemo04(name in varchar,age in int) as begin ??dbms_output.put_line(‘name=‘||name||‘,age=‘||age); end; ?调用 declare ?name varchar(10); ?age int; begin ??name:=‘xiaoming‘; ??age:=18; ??myDemo04(name=>name,age=>18); end; 调用的时候如果需要变量,就可以在declare中声明,然后执行的时候把变量值通过=>从右向左赋值给参数,要用都要用,此时不能myDemo04(name=>name,18) 1.5?in,out参数create?or replace procedure?myDemo05(name out varchar,age in int) as begin dbms_output.put_line(‘age=‘||age); select ‘xiaoming‘ into name from 名字表; end; ?in就是调用方法时赋值,是来自方法外的值,而out是要自己查询出的值,在调用的时候就已经有了,而已赋值给其他变量 declare ?name varchar(10); ?age int; begin ??myDemo05(name=>name,age=>10); ??dbms_output.put_line(‘name=‘||name); end; 这个name是out,人家在内部查询出来,调用的时候就有值了,然后赋值给接收变量,下面还能输出,而in只能是调用时赋值. 2?增删改查2.1?操作create or replace procedure?mydemo07(ids in int,username in varchar,userpass in varchar,userage in int) end; 都是入参,接收后对表进行增删改操作 调用 begin 2.2?查询create or replace procedure?mydemo08(ids in int,age out int) 根据传入的id,查询出年龄输出 declare 3?循环3.1?for循环create or replace procedure?mydemo09 as begin ??for stu in (select * from students) loop ?????if (stu.id<5) then ????????dbms_output.put_line(stu.id); ??????end if; ??end loop; commit; end; ?调用 begin ??mydemo09(); end; 3.2?while循环create or replace procedure?test_while_loop as n_count number := 0; begin ??while n_count < 10 loop ????dbms_output.put_line(n_count); ????n_count := n_count + 1; ??end loop; end; ?在声明的时候也可赋值 begin ??test_while_loop(); end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |