SQL工作总结--
--1. 数据库包的创建
包:
create or replace package package_name is
--里面可以添加 存储过程 存储过程下面可以添加函数。
end crm_detl_cust_acct;
包体:
create or replace package body package_name is
--2. 数据库存储工程的创建
procedure procude_name( parameter) is
变量(全局变量使用)
begin
中间处理过程
end;
--3. 数据库函数的创建使用
function function_name(parameter ) return varchar2 is
定义使用到的变量
pragma autonomous_transaction; --自治事物
begin
---- 函数的调用 crm_batch_util.crm_get_schema('dws',vstr => DWS);
sql_str := 'truncate table crmp_cust_info';
execute immediate sql_str ; --写好的SQL语句执行
commit; --事务的提交
-- rollback; --事务的回滚
rtncode:='successed'; --如果事务提交成功 程序走到此处给successed值 返回成功 successed
return rtncode;
EXCEPTION --抛出异常信息 返回失败failed 错误提示
when others then
DBMS_OUTPUT.PUT_LINE(crm_batch_public.crm_gettime_fun||'----错误代码:'||SQLCODE||'---'||'错误信息:'||SQLERRM);
return 'failed';
end;
--4. 数据库中的输出语句
dbms_output.put_line();
--5. 调用自己写好的函数
xxx_yyy.aaa_bbb(); --例如 ? *参数传递的* 参数要全部传递 。。。
--6. 函数变量的定义
xxx type();
--7. 赋值
使用 " := "进行赋值 xxx := ' aaa ';
--8. 查询一个表的数据作为(插入)另一个表(新表)的数据
insert into tablename select * from tablename1 where xx=yy;
--9. 使用变量的方法 '||需要拼接的变量||'
--10. SQL中当成字符串来使用的话 '''||变量||''' "- '' -"两个逗号显示一个 ’ '再用一个'进行转译
--11. 程序中遇到,指针传递参数的,在数据库中先写一个函数,传递参数,在调用主要函数
function crm_acct_save_fun(wrkdate varchar2) return varchar2 is
rtncode varchar2(10);
pragma autonomous_transaction;
begin
--传入参数。
execute immediate 'select crm_detl_cust_acct.crm_acct_save_proc_fun(:1,:2,:3,:4) from dual' into rtncode using wrkdate,'crm_acct_save','dmb_org_save','04';
DBMS_OUTPUT.PUT_LINE(rtncode);
if rtncode = 'failed' then
return rtncode;
else
execute immediate 'select crm_detl_cust_acct.crm_acct_save_proc_fun(:1,:2,:3,:4) from dual' into rtncode using wrkdate,'crm_acct_save','dmb_org_save','05';
end if;
rtncode:='successed';
return rtncode;
EXCEPTION
when others then
DBMS_OUTPUT.PUT_LINE(crm_batch_public.crm_gettime_fun||'----错误代码:'||SQLCODE||'---'||'错误信息:'||SQLERRM);
return 'failed';
end;
--主要函数 (然后里面直接使用其变量就可以了。 wrkdate d_tbl s_tbl acc_cata )
function crm_acct_save_proc_fun(wrkdate varchar2,d_tbl varchar2,s_tbl varchar2,acc_cata varchar2) return varchar2 is
rtncode varchar2(10);
sql_str varchar2(32767);
DWG varchar2(10);
pragma autonomous_transaction;
begin
dbms_output.put_line(crm_batch_public.crm_gettime_fun||'----进行'||wrkdate||'日的企业存款账户数据处理' );
crm_batch_util.crm_get_schema('dwg',vstr => DWG);
dbms_output.put_line(crm_batch_public.crm_gettime_fun||'----正在清除'||d_tbl||'当年'||acc_cata||'数据' );
sql_str := 'delete from '||d_tbl||'
where year_id= '''||substr(wrkdate,1,4)||''' and account_cate='''||acc_cata||' ''';
dbms_output.put_line(sql_str);
execute immediate sql_str;
commit;
dbms_output.put_line(crm_batch_public.crm_gettime_fun||'----正在生成'||d_tbl||'当年'||acc_cata||'数据' );
sql_str := ' insert into '||d_tbl||'
select account_id,year_id,owner_org_id,manage_org_id,currency_code,
product_id,product_inner_id,customer_id,account_name,account_group_id,
account_cstm_id,account_status,account_attrib,account_cata,intrate_code,
interest_rate,open_date,expire_date,close_date,curr_date,
term_code,terms,para,para_bal,lst_accum,y_balance,balance,
accum,accum0,accum1,accum2,accum3,accum4,accum5,
accum6,accum7,accum8,accum9,accum10,accum11,accum12,
bal0,bal1,bal2,bal3,bal4,bal5,bal6,bal7,bal8,bal9,bal10,bal11,bal12
from '||DWG||'.'||s_tbl||'
where year_id='''||substr(wrkdate,1,4)||''' and account_cata='''||acc_cata||''' ';
execute immediate sql_str;
commit;
--
rtncode:='successed';
return rtncode;
EXCEPTION
when others then
DBMS_OUTPUT.PUT_LINE(crm_batch_public.crm_gettime_fun||'----错误代码:'||SQLCODE||'---'||'错误信息:'||SQLERRM);
return 'failed';
end;
--12. loading。。。
常量 ,变量拼接 传过来的 ‘’ 标识