如何使用 动态字段 查询表数据
时间:2011-12-02
来源:互联网
表 A 中存放表B的字段 ,如何将查询A表的值 作为 B表的查询字段 从而打到查询B表的效果?
---------一个
表存放字段,另一个表的列就是这些字段 模拟 动态字段查询数据
建表语句如下:
create table gzstorefields(id number ,fieldname varchar(100),datatype varchar(100)
,datadesc varchar(100),orderfield number)
create table gztest(gzid number,temp1 varchar(10),temp2 varchar(10)
,temp3 varchar(10),temp4 varchar(10));
insert into GZSTOREFIELDS (ID, FIELDNAME, DATATYPE, DATADESC, ORDERFIELD)
values (1, 'temp1', 'varchar(10)', 'temp1', 1);
insert into GZSTOREFIELDS (ID, FIELDNAME, DATATYPE, DATADESC, ORDERFIELD)
values (2, 'temp2', 'varchar(10)', 'temp2', 2);
insert into GZSTOREFIELDS (ID, FIELDNAME, DATATYPE, DATADESC, ORDERFIELD)
values (3, 'temp3', 'varchar(10)', 'temp3', 3);
insert into GZSTOREFIELDS (ID, FIELDNAME, DATATYPE, DATADESC, ORDERFIELD)
values (4, 'temp4', 'varchar(10)', 'temp4', 4);
insert into GZTEST (GZID, TEMP1, TEMP2, TEMP3, TEMP4)
values (1, '1', '11', '111', '1111');
insert into GZTEST (GZID, TEMP1, TEMP2, TEMP3, TEMP4)
values (2, '2', '22', '222', '2222');
insert into GZTEST (GZID, TEMP1, TEMP2, TEMP3, TEMP4)
values (3, '3', '33', '333', '3333');
insert into GZTEST (GZID, TEMP1, TEMP2, TEMP3, TEMP4)
values (4, '4', '44', '444', '4444');
---------一个
表存放字段,另一个表的列就是这些字段 模拟 动态字段查询数据
建表语句如下:
create table gzstorefields(id number ,fieldname varchar(100),datatype varchar(100)
,datadesc varchar(100),orderfield number)
create table gztest(gzid number,temp1 varchar(10),temp2 varchar(10)
,temp3 varchar(10),temp4 varchar(10));
insert into GZSTOREFIELDS (ID, FIELDNAME, DATATYPE, DATADESC, ORDERFIELD)
values (1, 'temp1', 'varchar(10)', 'temp1', 1);
insert into GZSTOREFIELDS (ID, FIELDNAME, DATATYPE, DATADESC, ORDERFIELD)
values (2, 'temp2', 'varchar(10)', 'temp2', 2);
insert into GZSTOREFIELDS (ID, FIELDNAME, DATATYPE, DATADESC, ORDERFIELD)
values (3, 'temp3', 'varchar(10)', 'temp3', 3);
insert into GZSTOREFIELDS (ID, FIELDNAME, DATATYPE, DATADESC, ORDERFIELD)
values (4, 'temp4', 'varchar(10)', 'temp4', 4);
insert into GZTEST (GZID, TEMP1, TEMP2, TEMP3, TEMP4)
values (1, '1', '11', '111', '1111');
insert into GZTEST (GZID, TEMP1, TEMP2, TEMP3, TEMP4)
values (2, '2', '22', '222', '2222');
insert into GZTEST (GZID, TEMP1, TEMP2, TEMP3, TEMP4)
values (3, '3', '33', '333', '3333');
insert into GZTEST (GZID, TEMP1, TEMP2, TEMP3, TEMP4)
values (4, '4', '44', '444', '4444');
作者: ycscsjj 发布时间: 2011-12-02
--因为你没写具体需求,大概写了一个。供你参考。
SQL code
SQL code
DECLARE TYPE gztest_t1_type IS TABLE OF gztest.temp1%TYPE INDEX BY BINARY_INTEGER; TYPE gztest_t2_type IS TABLE OF gztest.temp2%TYPE INDEX BY BINARY_INTEGER; TYPE gztest_t3_type IS TABLE OF gztest.temp3%TYPE INDEX BY BINARY_INTEGER; TYPE gztest_t4_type IS TABLE OF gztest.temp4%TYPE INDEX BY BINARY_INTEGER; v_tmp1 gztest_t1_type; v_tmp2 gztest_t2_type; v_tmp3 gztest_t3_type; v_tmp4 gztest_t4_type; BEGIN FOR rec IN (SELECT * FROM gzstorefields ORDER BY orderfield) LOOP CASE REC.ID WHEN 1 THEN EXECUTE IMMEDIATE 'SELECT '||REC.FIELDNAME||' FROM gztest ' BULK COLLECT INTO v_tmp1; WHEN 2 THEN EXECUTE IMMEDIATE 'SELECT '||REC.FIELDNAME||' FROM gztest ' BULK COLLECT INTO v_tmp2; WHEN 3 THEN EXECUTE IMMEDIATE 'SELECT '||REC.FIELDNAME||' FROM gztest ' BULK COLLECT INTO v_tmp3; WHEN 4 THEN EXECUTE IMMEDIATE 'SELECT '||REC.FIELDNAME||' FROM gztest ' BULK COLLECT INTO v_tmp4; ELSE NULL; END CASE; END LOOP; FOR I IN v_tmp1.FIRST..v_tmp1.LAST LOOP DBMS_OUTPUT.put_line(v_tmp1(I)); END LOOP; DBMS_OUTPUT.put_line(''); FOR J IN v_tmp2.FIRST..v_tmp2.LAST LOOP DBMS_OUTPUT.put_line(v_tmp2(J)); END LOOP; DBMS_OUTPUT.put_line(''); FOR K IN v_tmp3.FIRST..v_tmp3.LAST LOOP DBMS_OUTPUT.put_line(v_tmp3(K)); END LOOP; DBMS_OUTPUT.put_line(''); FOR L IN v_tmp4.FIRST..v_tmp4.LAST LOOP DBMS_OUTPUT.put_line(v_tmp4(L)); END LOOP; DBMS_OUTPUT.put_line(''); END;
作者: BenChiM888 发布时间: 2011-12-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28