永发信息网

在ORACLE中,如何找到任意SQL字符串中的表,并将表进行指定规则的替换,比如在表名后加DBLINK

答案:2  悬赏:0  手机版
解决时间 2021-01-27 07:31
在A数据库可以执行一段SQL
SELECt QW,QE,QR FROM Q WHERe Q=1;
或者
SELECt QW,COUNT(1) FROM (SELECt QW,QE,QR FROM Q WHERe Q=1 ) GROUP BY QW;
SELECt QW,COUNT(1) FROM EW,(SELECt QW,QE,QR FROM Q WHERe Q=1 ) WHERe EW=QW GROUP BY QW;
在B数据库有A数据库的DBLINK,如果要在B库执行以上语句,则需要在每张表后面加上 @B,
现在问题是,如果提供的SQL是动态的,那么在B库执行时,每次都要人为的识别表再在后面加上 @B,
在ORACLE中,如何实现这个SQL文本的通用转换?
"FROM" 后的非空格的第一个字符不是符号时可以将从这个字符开始到下一个逗号、括号或空格的截止的字符串识别为表
”WHERe“ 不是表
就想到以上两点,也不知道在ORACLE中该怎么写这些逻辑。。。请大神帮忙
最佳答案
动态SQL 实质就是执行的SQL字符串,所以你完全可以用拼接的方式,先把 字符串 拼接出来,然后用execute immediate 'sql' 来执行;

至于如果拼接出来 SQL,那就需要你去找规律,其实你可以对字符串做对此拼接,例如一下:str1 :='SELECt QW,QE,QR FROM Q WHERe Q=1';
str2 :='SELECt QW,COUNT(1) FROM EW,' || str1 || 'WHERe EW=QW GROUP BY QW;'

这类问题 完全属于个别案例,因为SQL的规律只有你自己最清楚,谁都无法提供一个完整的解决方案!
全部回答
会不会是大小写的问题,或者关键字的问题 你到sqlserver中查查,这个表的定义的语法情况。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梦幻西游手游地狱蜃境通关技巧 地狱蜃境怎么
三哲的意思是什么啊?知道的请说下!
其它粉尘职业接触限值在什么范国内不用接受职
开眼角手术会不会回缩
地震前是否有青蛙叫的征兆?
安顺驾校(郑州金水)地址在什么地方,想过去办
剪切力的意思是什么啊?知道的请说下!
已婚女人梦到娘家和婆家大闹,然后离婚,什么意
诛仙2寻宝符咒任务?最新坐标。
万达驾校报名点(信阳固始县)地址有知道的么?
FLAG在什么地方啊,我要过去处理事情
梅艳芳《梦伴》这首歌是表达什麼意思的?
暗黑破坏神2大背包安装问题。使用方法中的:
压线的意思是什么啊?知道的请说下!
生死狙击 恶魔m4a1小说
推荐资讯
pretty bad是什么意思?
95588002是工行的卡吗,是哪个银行
茅台酒瓶身发霉 还没有开封 能喝么吗
cf踢腿被和谐补偿是什么 cf踢腿狙补偿在哪里
600除以7用简便方法计算
中石油乌海第八加油站怎么去啊,我要去那办事
电缆隧道进入建筑物及配电所处,应采取哪种防
hp4500一体机发传真如何操作
金闺玉堂的意思是什么啊?知道的请说下!
谁有鹏为施工日记管理软件的注册码?
通达信条件预警公式:股价盘中突破季线或半年
从山东省滨州市到黑龙江省密山市三个人坐火车
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?