一个简单的存储过程
创建一个简单的存储过程
其中涉及到是基本的传参,定义参数,参数赋值,条件语句,循环语句,用游标遍历等基本语法
--创建一个存储过程
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);
create or replace procedure addgoods(
gname1 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 -- 处理异常 要把需要处理的代码块用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('不存在任何记录');
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;
i:= 1;
while i < 10 loop
begin
dbms_output.put_line('i的值是:' || i);
i:= i + 1;
end;
end loop;
i:= 1;
for vvv in ee(999) loop
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);
end;
-- 在sqlcommand中运行
exec addgoods(user_skey);
不积跬步无以至千里