发布网友 发布时间:2022-04-09 10:49
共2个回答
懂视网 时间:2022-04-09 15:11
insert into test values(‘CA-CA1344-A-11OCT141250-D‘);
insert into test values(‘JD-JD693-A-11OCT141105-D‘);
方法1:
select substr(name,instr(name,‘-‘,1)+1,instr(name,‘-‘,instr(name,‘-‘,1)+1)-instr(name,‘-‘,1)-1) from test;
方法2:
select substr(name,instr(name,‘-‘,1,1)+1,instr(name,‘-‘,1,2)-1-instr(name,‘-‘,1,1)) from test;
接下我们再写一下,取第二个"-"到第三个"-"之间的字符串的方法:
select substr(name,instr(name,‘-‘,2,2)+1,instr(name,‘-‘,2,3)-1-instr(name,‘-‘,2,2)) from test;
EBS_SQL_技巧:截断
标签:
热心网友 时间:2022-04-09 12:19
欢迎指正!mes="" new="" roman";="" mso-hansi-font-family:"times="" roman""="">在Oracle EBS中,如何从Form界面中知道或获取后台所运行的相关的SQL语句。方法一:在EBS界面的菜单上Help--------diagnostic----examine----- Block:System Field: Last_Query Value:_this is what yuou want__ 这个方法基本能够捕捉到大部分的SQL,但是前提是当前的这个From或LOV刚过行了查询事件。之前在一次面试中问到相关的方法,只是那个时候自己还不知道这个方法。 比如:想要找到PO对应的Tax相关的取数SQL,在Oracle EBS 11i里可能不是那么容易,因为弹出来的Tax界面已经另外一个Form上了(R12好像是显示在HTML上,不太记得了),我想即使把相关的From下载来分析也不是好办法,但是前面的这种方法却很轻松的获取想要的SQL语句。 方法二: 查找LOV的SQL脚本的方法。A. get the session Id(SID) from the formhelp-------about oracle application-------session IdB. open lov to fire the triggerC. get the lov sql with the flowing sql statement.SELECT s.pre_sql_addr,s.sql_addr,t.sql_textFROM v$sqltext_with_newlines t, V$session sWHERE 1 = 1 And t.address = s.prev_sql_addr And s.sid = v_SID(we get the SID from oracle form);稍微的组织下就是想要的SQL。 总结:1. 方法一是很实用的方法,也应该是最为常用的,值得推荐。2. 方法二对于LOV来说,最为适合的一种方法。