问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于oracle里有没有像EXCEL那样的查找定位功能

发布网友 发布时间:2022-04-09 22:51

我来回答

4个回答

热心网友 时间:2022-04-10 00:20

首先我想说一个问题:就是权限问题,比如说你使用一个用户登陆了数据库,那么你有权限查看别的用户下的数据吗?如果没有授权,就算是DBA登陆了,也不能查看其它用户的私有数据(没有授权的).
不过要是查看某个用户(查询自己的用户名:select user from al)下面的某个表中是否含有某个数据,按理论来说,是可以实现的.不过实现过程不是一般的复杂.
我这样想的:
写一个过程,参数有:用户名,是输入参数,varchar2,要查找的字符串,in varchar2(因为每种类型都可以转换为这个类型,除了blob,clob),再一个就是out sys_cursor.
第三个参数因为不确定几个表中有这个数据,所以要用游标类型.
过程中用到DBMS_SQL这个包,与all_objects这个视图,
先根据视图查询出这个用户下面有哪些表,
SELECT * FROM All_Objects WHERE owner='USERNAME' AND object_type='TABLE'
存在一个数组中,然后LOOP这个数组,
使用DBMS_SQL这个包根据条件查询,对表进行查询.
对DBMS_SQL这个包的使用你可以上网查,网上很多.

不过由于进行的查询操作比较多,所以就算写出来了这个过程,时间上可能要花费比较大.少也要几秒钟,多的话,很多很多几分钟也是可能的.这个主要看表的多少,与表中数据量的多少.
如果要查询的用户下面,有四五个表中的数据,都超过了几千万条的话,这个过程我觉得可能就会跑一段时间了.因为几千万条的数据,对一个没有索引的查询是多么的慢,而且还要对每一列的每一个数据进行匹配.所以说在时间上花费会比较大,
自己写着玩还可以.不过要是真的要用的话,我觉得可能性不是很大.
我刚刚写了一个存储过程,测试过了,
如果说得到一个表的所有数据,数据大的时候,会报buffer overflow.所以我又加了几个参数,取哪一列的第几行到第几行的数据。以作参考:
CREATE OR REPLACE PROCEDURE current_col_value(table_name VARCHAR2,col NUMBER,f NUMBER ,t NUMBER) IS
l_cursor INTEGER := dbms_sql.open_cursor;
l_state VARCHAR2(3000);
l_status INTEGER;
col_cnt INTEGER;
desc_tab dbms_sql.desc_tab;
v VARCHAR2(300);
BEGIN
l_state := 'select * from ' || table_name || ' where 1=2 ';
dbms_sql.parse(l_cursor, l_state, dbms_sql.native);
dbms_sql.describe_columns(l_cursor, col_cnt, desc_tab);
IF col>col_cnt THEN
dbms_output.put_line('给出的列值太大');
ELSIF t<f THEN
dbms_output.put_line('第三个参数不可大于第四个参数');
ELSE
l_state := 'select * from (select ' || desc_tab(col).col_name || ', rownum rnum from '
|| table_name||') where rnum between :f and :t';
dbms_sql.parse(l_cursor, l_state, dbms_sql.native);
dbms_sql.bind_variable(l_cursor,':f',f);
dbms_sql.bind_variable(l_cursor,':t',t);
dbms_output.put_line(l_state);
dbms_sql.define_column(l_cursor, 1, v, 300);
l_status := dbms_sql.execute(l_cursor);
LOOP
EXIT WHEN dbms_sql.fetch_rows(l_cursor) <= 0;
dbms_sql.column_value(l_cursor, 1, v);
dbms_output.put_line(v);
END LOOP;
END IF;
dbms_sql.close_cursor(l_cursor);
EXCEPTION
WHEN OTHERS THEN
IF dbms_sql.is_open(l_cursor) THEN
dbms_sql.close_cursor(l_cursor);
END IF;
END;

热心网友 时间:2022-04-10 01:38

这个真没有,excel充其量只能算一个表格,不能算一个数据库,像oracle,sql servlet,db2,mysql等这些数据库,都是没有这样的功能的!不好意思了、

热心网友 时间:2022-04-10 03:13

你可以使用pLSQL试试看,其如果使用SQL语句则更好

热心网友 时间:2022-04-10 05:04

我的excel 是关闭的数据表的格式 列数跟xlsx文件里也是一样的我用的系统是OleDbConnection _connection= new OleDbConnection(
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
vivo y3t手机能拨打和接听电话,不能收发短信 vivoy3t手机突然接收不到短信 vivoy3短信消息怎么提醒 无奈什么意思是什么 怎样让炒出的丝瓜不发黑? 钟表是以什么计量时间 钟表以( )、()、( )计量时间。 钟表以( )、()、( )单位计量时间 紫荆花开放时间 《青春 须臾成殇》渭伊的txt全集下载地址 何必如此。 为何不能顺其自然? 合肥职工医保单位已缴二个月,怎么却显示末到账呢 凡事不能强求是,顺其自然,是什么意思,不是爱情,是生活? 市面上肉多黄多的虾有哪些? 子女成长应不应该顺其自然? 人活着应不应该顺其自然 顺其自然的心态好还是不好? 不自信的人,都不能顺其自然的过日子生活吗? 我为什么会这样呢,不能顺其自然的自信? 是不是不要顺其自然? 为什么有人不能顺其自然? 与其胡乱抉择,不如顺其自然,大龄青年的感情生活真的只能等待吗? 顺其自然不好吗? 怎样对加密的EXCEL单元格进行解密 人们常说顺其自然,可我觉得关于自己的大事不能顺其自然,必须自己干涉,只是有些得不到的东西,或者完不 我真的不能顺其自然的自信,而且活的一天不如一天。好难受? 我为什么总是不能顺其自然的培养自信?总是一会儿有效果,一会儿没效果,一会儿自信!一会儿又不自信! 爱情最好不要顺其自然,顺其自然的感情是否真的走不到最后? 思想迂腐,不懂得思考,幼稚?不能顺其自然为什么?怎么办? 人生里面哪些事不能让它顺其自然? 航海王燃烧意志海战中在基地怎么回血? 航海王燃烧意志,八十级赤犬怎么加点 海贼王燃烧意志凯多怎么做到三回合免死? 航海王燃烧意志剧情用完挑战次数什么时候恢复 事业部实习计划怎么写 航海王燃烧意志航线模拟战25怎么过 工作计划怎么写,我就来实习一天左右但是公司需要写这个计划。应该怎么写呢 我才在公司实习五天 老板就叫我写下周工作计划 我该怎么写?? 中国银行磁条卡换芯片卡不换卡号不影响单位发工资吧? 招行磁条卡换芯片卡卡号改变之后收不到发工资发放 交行磁条卡换芯片卡工资还能发吗? 借记卡换芯片卡需要收费么,会影响工资发放么? 工行磁条卡换芯片卡影响打工资吗 我是建行的工资卡,换成芯片卡后,我不跟单位说会不会影响银行发工资? 银行卡磁条卡换成芯片卡原来的卡号还否收到厂里发的工资 如果我的银行卡升级换成芯片卡后,会影响我收钱吗? 储蓄卡磁条卡换芯片卡以前工资上老卡上新卡可以收到么 音乐符号有哪些,要全部的 ※是什么音乐符号谢谢 听说磁条卡要换芯卡了,如果银行卡里有钱怎么办,要把钱取出来吗