存储过程语法记录(个人浅解)

1、函数体

CREATE OR REPLACE 
	procedure      "函数名"(
		in_p1   in varchar2 ,-- 入参及其类型
		...
		error_msg     out varchar2,--- 出参及其类型
	)
is
	v_val1 varchar2(255); -- 零时变量及其类型
	...
	v_val2 varchar2(255); -- 零时变量及其类型
  begin
		v_val1 := '';--赋值语句
		--	查询并赋值,多个参数用,分够并接受  (注意查询结果为一条数据)
		select s.val1,s.val2 INTO v_val1 ,v_val2 from "表名" s;
     	--执行sql
     	delete from "表名" s where s.val1= val1;
     	update "表名" s set s.val1= val1;
		-- 查询规则并遍历 ruleKey 临时变量对象
		for ruleKey in (select * from  "表名" f where f.val1= val1) loop
				v_val2 := v_val2 || ' s1.'||ruleKey.v_val2 ||'=f2.'||ruleKey.v_val2 ||' and ' ;
		end loop;
		--if表达式
		if ture  then 
				-- 执行sql
				--赋值变量
		end if;
		--执行手动拼接的sql字符串
		execute immediate v_sql;
		--执行手动拼接的sql字符串并为临时变量赋值
		execute immediate v_sql into val1;
		--打印
		--dbms_output.put_line(v_sql);
 commit;
 error_msg :='TRUE';
 EXCEPTION  -- 捕获异常
    WHEN OTHERS THEN  
        error_msg     := 'FALSE'||SQLCODE||SUBSTR(SQLERRM,1,500);
        ROLLBACK;
end;

2、if语句

  if  xxx  then
  --执行逻辑
  elseif   xxx then
  --执行逻辑
  end if

3、for遍历

--遍历查询结果
for item in (select * from  "表名" f where f.val1= val1) loop
		--执行逻辑;
end loop;
--普通遍历
for i in 1..100 loop
      dbms_output.put_line(i);
end loop;

while i <100 loop
	  i++;
      dbms_output.put_line(i);
end loop;

begin…end 代码块

 --有时候一个逻辑代码比较多,这个时候就可以用代码块包含起来,方便理解代码块
 begin
 	...
 end
 

说明:个人写存储过程常用的,并不代表标准。有不对的欢迎指正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值