create or replace function F_DEALWITH_LSBD(YDYF varchar2) return varchar2 is TYPE ref_type IS REF CURSOR; P_YDYF varchar2(8);--年度月份 V_SQL_QUERY CLOB;--查询未返写的数据的sql V_NSRDZDAH varchar2(30); V_FKJG_BH varchar2(32); V_SQL_UPDATE CLOB;--返写更新sql cur ref_type;--动态游标 pragma autonomous_transaction; begin P_YDYF := YDYF; V_SQL_QUERY := 'select mx.nsrdzdah,nvl(k.fkjg_bh,'''') from LDMT04_LSBDDZ_HZ h,fxyd_rwmx mx,fxyd_ydjgfk k where h.dsnsrzhdah = mx.nsrdzdah and mx.rwpc_bh is not null and mx.rwtczt_dm = ''YXF'' and mx.hxcl_dm = ''YDCZ'' and mx.xxly_dm = ''00'' and exists(select 1 from fxfx_smmx m,FXGL_FXSB_MXKZSX kz where m.fxmx_bh = mx.fxxx_bh and kz.mx_dm = m.mxdm and kz.tsfx_lx = ''02'') and h.sfczcy is null and mx.fxxx_bh = k.fxxx_bh(+) and h.ydyf = '''||P_YDYF||''''; open cur for V_SQL_QUERY; FETCH cur into V_NSRDZDAH,V_FKJG_BH; while cur%FOUND LOOP if V_FKJG_BH='' THEN V_SQL_UPDATE:='update LDMT04_LSBDDZ_HZ set sfczcy=''Y'',sfycl=''N'' where dsnsrzhdah='''||V_NSRDZDAH||''' and ydyf='''||P_YDYF||''''; ELSE V_SQL_UPDATE:='update LDMT04_LSBDDZ_HZ set (sfczcy,sfycl,BJCJS,BJCJSZNJ, BJJYFFJ,BJJYFFJZNJ,BJDFJYFJ,BJDFJYFJZNJ,BJFK,CYYY,FKLRRY,FKRQ,BZ) = (select ''Y'', ''Y'', sum(decode(z.zsxm_dm, ''10109'',decode(z.zspm_dm,''101099900'',null,''101099901'',null,''101099961'',null,z.rksk),null)), sum(decode(z.zsxm_dm, ''10109'',decode(z.zspm_dm,''101099900'',z.rksk,null),null)), sum(decode(z.zsxm_dm, ''10381'',decode(z.zspm_dm,''103819900'',null,''103819901'',null,''103819961'',null,z.rksk),null)), sum(decode(z.zsxm_dm, ''10381'',decode(z.zspm_dm,''103819900'',z.rksk,null),null)), sum(decode(z.zsxm_dm, ''10386'',decode(z.zspm_dm,''103869900'',null,''103869901'',null,z.rksk),null)), sum(decode(z.zsxm_dm,''10386'',decode(z.zspm_dm,''103869900'',z.rksk,null),null)), sum(decode(z.zsxm_dm||''!''||z.zspm_dm, ''10109!101099901'',z.rksk,''10109!101099961'',z.rksk, ''10381!103819901'',z.rksk,''10109!103819961'',z.rksk, ''10386!103869901'',z.rksk, null)), '''', max(k.YDCZRY_MC), to_char(max(k.FKSJ),''yyyy-mm-dd''), '''' from fxyd_ydjgfk_zs z, fxyd_ydjgfk k where k.fkjg_bh = z.fkjg_bh(+) and k.fkjg_bh = '''||V_FKJG_BH||''' group by k.fkjg_bh) where dsnsrzhdah='''||V_NSRDZDAH||''' and ydyf='''||P_YDYF||''''; END IF; --执行更新 EXECUTE IMMEDIATE V_SQL_UPDATE; commit; FETCH cur into V_NSRDZDAH,V_FKJG_BH; END LOOP; CLOSE cur; return ''; end;
pragma autonomous_transaction;是关键加了这个提供了一个自治事物就可以在执行function时执行dml语句了
select f_dealwith_lsbd('?') from dual;
相关推荐
还有一种情况,当我们使用create or replace procedure/function等语句修改Procedure和Function的时候,会话也会hang住,这是为什么呢? 当出现上述情况的时候,我们可以通过v$session_wait查询等待事件,当然,...
数据操作语言Data Manipulation Language(DML),用来插入、修改、删除、查询,可以修改数据库中的数据。例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句 数据查询语言 (Data Query Language, DQL)...
下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...
第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...
审计的 DML 语句:注意事项 10-23 FGA 准则 10-24 DBA 审计 10-25 维护审计线索 10-26 安全更新 10-27 应用安全补丁程序 10-28 小结 10-29 练习概览:实施 Oracle 数据库安全性 10-30 11 配置 Oracle 网络...
本文是由笔者2012年学习oracle数据库时编写的学习札记,其中的题目 多数为老师留下的思考题目。 我相信本文会对初学者使用oracle有一个初步的使用印象。右图为我所参 考的书籍。 目录 第一讲 Oacle关系数据库 ...
2.1.3 使用查询分析器执行SQL语句 2.2 Transact-SQL 2.2.1 Transact-SQL 概述 2.2.2 Transact-SQL的主要组成 2.2.3 Transact-SQL的一些重要命令 2.3 Oracle数据库 2.3.1 Oracle数据库软件组成 ...
2.1.3 使用查询分析器执行sql语句 22 2.2 transact-sql 24 2.2.1 transact-sql 概述 24 2.2.2 transact-sql的主要组成 25 2.2.3 transact-sql的一些重要命令 26 2.3 oracle数据库 29 2.3.1 oracle数据库软件...
下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...
函数:Create or replace function funcname(参数列表) return 返回值 as PL/SQL语句块 为便于理解,举例如下: 问题:假设有一张表t1,有f1和f2两个字段,f1为number类型,f2为varchar2类型,要往t1里写两条...
结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得...
Ø DML语句 DML主要针对数据库表对象的数据而言的,一般DML完成: 插入新数据 修改已添加的数据 删除不需要的数据 1、 insert into 插入语句 insert into temp values(null, ‘jack’, 25); 主键自增可以不插入,...
{12.13}DML语句}{175}{section.12.13} {12.13.1}insert}{175}{subsection.12.13.1} {12.13.2}create}{175}{subsection.12.13.2} {12.13.3}rownum}{175}{subsection.12.13.3} {12.13.4}update}{176}{subsection....