因项目需要,需要将存储过程中的 dml语句输出到日志表中,
日志表主要列为:过程id,sql序号,sql语句,开始执行时间,执行结束时间。即要求在过程中,有如下的结构日志过程(过程id,sql序号,null,sysdate,null)
insert into **** select *** from ***;
--以下需要取得上边的sql语句,再次调用日志过程
日志过程(过程id,sql序号,上边的sql语句,sysdate,null)既在每条sql语句执行前后分别调用日志过程,将执行过的sql语句保存在日志表中。现在问题的难点在 如何在sql语句执行过之后,得到sql语句。
因为项目是改造项目,原来的过程中 大部分的sql语句都是静态的且夹杂着很多变量条件,所以 把insert into **** select *** from *** 之类的语句赋值给一个变量,然后采用 execute 的方法基本上是被枪毙了(改造量太大,且之所以有这个需求是 客户要分析过程中的sql语句,所以 必须保证日志中的sql是可执行的。)谢谢了1
日志表主要列为:过程id,sql序号,sql语句,开始执行时间,执行结束时间。即要求在过程中,有如下的结构日志过程(过程id,sql序号,null,sysdate,null)
insert into **** select *** from ***;
--以下需要取得上边的sql语句,再次调用日志过程
日志过程(过程id,sql序号,上边的sql语句,sysdate,null)既在每条sql语句执行前后分别调用日志过程,将执行过的sql语句保存在日志表中。现在问题的难点在 如何在sql语句执行过之后,得到sql语句。
因为项目是改造项目,原来的过程中 大部分的sql语句都是静态的且夹杂着很多变量条件,所以 把insert into **** select *** from *** 之类的语句赋值给一个变量,然后采用 execute 的方法基本上是被枪毙了(改造量太大,且之所以有这个需求是 客户要分析过程中的sql语句,所以 必须保证日志中的sql是可执行的。)谢谢了1
解决方案 »
- 创建表的storage的问题
- 求教高手 表相关联的问题
- 存储扩容oracle数据库迁移请教
- 把一张表插入到另张表,但是主键字段重复..(现在还在加班苦逼啊,在线等///)
- 每月的后五天每天凌晨3点执行一次的计划任务
- 求一个分组统计方法
- 用系统时间能否达到作主键的目的?
- 请教高手:oracle8.x运行于winxp出现strtdb80.exe错误。在线等待.
- 取出从12/12/2004到20/12/2004每天10点到12点的纪录,sql该如何写?
- oracle9i 安装问题.
- ORA-02041的问题
- 急急急。。。在.net2.0环境下,在一个事物中锁行锁住多个表,锁表时出错不全部回滚,只想回滚但前出错的那些操作。
以前记录死锁的时候查询过
可以看一下v$lock, sys.v_$session
多百度和google一下
继续求可行方案!
列出当前用户执行的可恢复的语句
2.分别对每个存贮过程充分进行单元测试无误后,再进行整个数据库(包括存贮过程、函数、触发器等)的集成测试。本人认为:对sql语句进行分析是一种方法,但完整的测试(条件测试、覆盖测试等)更是一种方法。
点击工具->会话
然后又管你session中所有执行的动作都在其中,你可以先点击下其中的一个看一下,
你可以看到下面中的sql text域中就是你执行的那些静态sql这个时侯你就可以通过User_Name选出这些符合你自己要求的数据,在进行存储就可以了。。你可以试试看
where a.sql_address=b.address order by address
order by v.LAST_ACTIVE_TIME desc
第二行既是 module执行的sql_text(第一行是本句)
Contains the name of the module that was executing at the time that the SQL statement was first parsed as set by calling DBMS_APPLICATION_INFO.SET_MODULE
包含调用sql语句的模块名称,可以用DBMS_APPLICATION_INFO.SET_MODULE设定好像是这样