oracle存储过程

存储过程:

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度
2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。

4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。




本人使用场景

在linux下使用存储过程全量导入A表内容到B表,或者(更新,删除),而不借助java程序那些,效率快

#! /bin/ksh
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8  
sqlplus scmgt/scmgt@testdb<<!

TRUNCATE TABLE CH_T_ALBUM_INFO_0326;
DECLARE
  i number:=0;
  j number:=0;
 
  CURSOR MYCUR IS SELECT 

	 A.ALBUMID                                            ,
	 A.ALBUMNAME                                          ,
	 A.STATUS                                             ,
	 A.SONGIDS                                            ,
	 A.SINGERID                                           ,
	 A.TRACKCOUNT                                         ,
	 A.PRODUCTIONCOMPANY                                  ,
	 A.PUBLISHCOMPANY                                     ,
	 A.PUBLISHDATE                                        ,
	 A.PUBLISHAREA                                        ,
	 A.LANGUAGE                                           ,
	 A.ALBUMLENGTH                                        ,
	 A.ALBUMPICS                                          ,
	 A.ALBUMPICM                                          ,
	 A.ALBUMPICL                                          ,
	 A.SALESVOLUME                                        ,
	 A.AWARDS                                             ,
	 A.ALBUMNAMEPINYIN                                    ,
	 A.ALBUMNAMEFIRSTLETTER                               ,
	 A.ALBUMINTRO                                        
             
	FROM SYNCMATERIAL_ALBUM A;
BEGIN
  DBMS_OUTPUT.PUT_LINE('Start At ' || TO_CHAR(SYSDATE, 'yyyymmdd HH24:mi:ss'));
  FOR VROW IN MYCUR LOOP
    	i:=i+1;
  	j:=j+1;	

       INSERT INTO CH_T_ALBUM_INFO_0326
       (  
		 ALBUM_ID                                   ,
		 ALBUM_NAME                                 ,
		 STATUS                                     ,
		 SONG_ID                                    ,
		 SINGGER_ID                                 ,
		 TRACK_COUNT                                ,
		 PRODUCTION_COMPANY                         ,
		 PUBLISH_COMPANY                            ,
		 PUBLISH_DATE                               ,
		 PUBLISH_AREA                               ,
		 LANGUAGE                                   ,
		 ALBUM_LENGTH                               ,
		 ALBUM_PIC_S                                ,
		 ALBUM_PIC_M                                ,
		 ALBUM_PIC_L                                ,
		 SALES_VOLUME                               ,
		 AWARDS                                     ,
		 ALBUM_NAME_PINYIN                          ,
		 ALBUM_INI                                  ,
		 INTRO                                      ,
		 CREATE_TIME                                
		 --ALBUM_PIC_S_DIR                            ,
		 --ALBUM_PIC_M_DIR                            ,
		 --ALBUM_PIC_L_DIR                            

        )values( 
	 	 VROW.ALBUMID                                            ,
		 VROW.ALBUMNAME                                          ,
		 DECODE(VROW.STATUS,'10','0',DECODE(VROW.STATUS,'20','2',DECODE(VROW.STATUS,'30','1','0'))),
		 VROW.SONGIDS                                            ,
		 VROW.SINGERID                                           ,
		 VROW.TRACKCOUNT                                         ,
		 VROW.PRODUCTIONCOMPANY                                  ,
		 VROW.PUBLISHCOMPANY                                     ,
		 VROW.PUBLISHDATE                                        ,
		 VROW.PUBLISHAREA                                        ,
		 VROW.LANGUAGE                                           ,
		 VROW.ALBUMLENGTH                                        ,
		 DECODE(VROW.ALBUMPICS,null,'','http://218.200.230.40:18089/'||VROW.ALBUMPICS)          ,
		 DECODE(VROW.ALBUMPICM,null,'','http://218.200.230.40:18089/'||VROW.ALBUMPICM)          ,
		 DECODE(VROW.ALBUMPICL,null,'', DECODE(VROW.ALBUMPICL,'null','','http://218.200.230.40:18089/'||VROW.ALBUMPICL))          ,
		 VROW.SALESVOLUME                                        ,
		 VROW.AWARDS                                             ,
		 VROW.ALBUMNAMEPINYIN                                    ,
		 VROW.ALBUMNAMEFIRSTLETTER                               ,
		 VROW.ALBUMINTRO                                         ,
		 current_date					
	);
	  	if j=10 then
	  		COMMIT;
	  		j:=0;
	  	end if;
	  
  END LOOP;
  COMMIT;
  DBMS_OUTPUT.PUT_LINE('Complete At ' || TO_CHAR(SYSDATE, 'yyyymmdd HH24:mi:ss')); 
END;
/	

exit ;
!
echo "`date` END"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值