创建一个简单的存储过程 其中涉及到是基本的传参,定义参数,参数赋值,条件语句,循环语句,用游标遍历等基本语法
--创建一个存储过程 create or replace procedure addgoods( -- 传入两个变量,一个输入变量,一个输出变量,输出变量用来作为返回值 gname1 user_table.user_skey%type , param1 out user_table.user_skey%type ) as -- 把变量的类型跟表中字段类型保持一致 id1 number(10); -- 定义两个没有初始化的变量 i number(10) ; cursor ee(v_user_skey Number) is select user_skey from user_table where user_skey = v_user_skey; --游标 ,带参数 游标的参数一定不能跟表中的字段一样,且不区分大小写 begin -- 代码处理块 , 用begin end包起来 begin -- 处理异常 要把需要处理的代码块用BEGIN END包起来,在代码块中紧跟EXCEPTION处理 select user_table.user_skey into id1 from user_table where user_table.user_skey = gname1; Exception WHEN NO_DATA_FOUND THEN dbms_output.put_line('不存在任何记录'); -- db的输出语句,在output标签下显示输出信息 ROLLBACK; RAISE; END; if id1 = 45 then -- 判断语句 begin dbms_output.put_line(gname1 || '的id是45'); end; end if; if id1 <> 45 then begin dbms_output.put_line(gname1 || '的id是'||id1); end; end if; param1:= id1; -- 变量赋值 i:= 1; while i < 10 loop -- while 循环 begin dbms_output.put_line('i的值是:' || i); i:= i + 1; end; end loop; i:= 1; for vvv in ee(999) loop -- for循环,使用游标 dbms_output.put_line('i的值为:' || i); i:= i + 1; dbms_output.put_line('存在的id值有:' || vvv.user_skey); -- 这一行必须有,循环体不能为空 end loop; dbms_output.put_line('111111'); end addgoods; -- 调用存储过程 begin addgoods(999); end; -- 使用代码块调用存储过程 只有这个调用有效,输出参数必须是一个变量 declare user_skey number; user_id number ; begin user_skey:= 999; addgoods(user_skey,user_id); -- 传入两个参数,一个输入参数,一个输出参数,输入参数必须初始化,输出参数是否初始化无所谓 dbms_output.put_line('返回的值是:' || user_id); end; -- 在sqlcommand中运行 exec addgoods(user_skey);转载于:https://www.cnblogs.com/jinxiuze/p/8005394.html
