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

PL/SQL中 输出列名和对应值。新手请教。

发布网友 发布时间:2023-09-06 11:33

我来回答

2个回答

热心网友 时间:2024-12-02 17:35

--很奇怪是下面from为什么不能用参数tablename?会报错
select colname into colValue from table1 where hashcode='0004193ebc123a54bbba3dd9d54de5f3';
这个from后面不能使用tablename参数很正常,因为你传进来的tablename是一个字符串,而不是一张表,所以是无法将tablename直接这么放到from 后边的 ,还有上面语句,colname本身是你从数据字典表中选到的变量名,也是一个字符型,相当于select '1' into colvalue from table1,这样的colvalue结果一定是'1',而不是colname这个列对应的值。因为colname已经成了字符型了。

应该使用execute immediate来执行。
最终语法修改如下:
declare
tablename varchar2(100):='TABLE1';
colname varchar2(100);
colValue varchar2(500);
selectsql varchar2(200);
--返回表中所有列名
cursor cursor_colname is select column_name as cname from user_tab_columns where table_name=tablename;
begin
open cursor_colname;
LOOP
fetch cursor_colname into colname;

--很奇怪是下面from为什么不能用参数tablename?会报错
selectsql := ' select ' || colname || ' from ' || tablename || ' where hashcode = ''0004193ebc123a54bbba3dd9d54de5f3''';
execute immediate selectsql into colValue;
exit when cursor_colname%notfound;
dbms_output.put_line(colname||'='||colValue);
end loop;
close cursor_colname;
end;

热心网友 时间:2024-12-02 17:35

创建返回结果集的函数
SQL> create or replace package pkg_HelloWorld as
2 -- 定义ref cursor类型
3 type myrctype is ref cursor;
4 --函数申明
5 function getHelloWorld return myrctype;
6 end pkg_HelloWorld;
7 /

Package created.

SQL> CREATE OR REPLACE package body pkg_HelloWorld as
2 function getHelloWorld return myrctype
3 IS
4 return_cursor myrctype;
5 BEGIN
6 OPEN return_cursor FOR 'SELECT ''Hello'' AS a, ''World'' AS B FROM al';
7 return return_cursor;
8 END getHelloWorld;
9 end pkg_HelloWorld;
10 /

Package body created.

SQL> SELECT pkg_HelloWorld.getHelloWorld FROM al;

GETHELLOWORLD
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

A B
---------- ----------
Hello World

参考资料:http://hi.baidu.com/wangqing999/blog/item/f23e99274a099c40925807bf.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7窗口淡入淡出慢 iPhone 小技巧:如何将 Safari 浏览器中的网页添加到桌面? 锰粉是什么颜色的金属 铁精粉的常见颜色是什么 烟花爆竹中的金属粉末如何使其呈现绚丽色彩? 金粉有哪些种类 灰土每层回填最大厚度 灰土基础简史 如何让一个喜欢你的女孩讨厌你! 西环里新区基本资料 astm 1250是不是54d 拜耳大专生难进吗 德国拜耳的实习生,有必要去吗 德国拜耳花生套餐效果好不好 德国拜耳安泰生能不能打花生? 千禧沙发属于几线品牌 中医中湿气过重的生物理论依据是什么? 注册需要人脸识别吗 百夫长金卡和 盐酸和氟化锂的反应快吗 氟化锂、草酸锂的溶解条件分别是什么,主要指溶剂、温度及操作步骤... 二重积分y-x-2,积分区域是椭圆,x^2/a^2+y^2/b^2=1 固定资产改良后,折旧年限如何计算 固定资产升级改造如何折旧 大家帮忙推荐下充电宝的品牌,爱国者,小米,品胜还有海陆通,哪一个... 40毫米的轴承型号有多少种 外径72内径40的轴承是什么型号的啊? 外径67.5mm 内径40mm 关节轴承应该是什么型号 青岛世园会有灯会吗 扬州夏天有什么好玩的地方 游玩路线推荐 如图,红绿灯前面有一辆车停在那不动,我绕过去压实线,会不会被拍到吗... 长虹42Q1N开机正常,几分钟后图像闪烁平并伴有水平线,几分钟后灰屏_百度... 形容发展慢的成语有哪些 淄博齐赛电脑城面积 看过北京青年的帮帮忙,王越给何北的纸条上到底写的是什么? 主机光纤输出能调音量吗 索尼1882音量不能控制 奥迪智能滑行转数表到零还是八百 康乾1号金满满终身寿险贵吗?值得推荐吗? 国华小状元1号少儿年金保险真的值得买吗?能领多少钱? 康乾1号金满满终身寿险究竟值不值得买?年金领多少? 智能屋顶涂层:能在夏季反射热量,在冬季阻挡热量流失 港科大研发智能杀菌涂层对抗冠状病毒,项目的应用前景如何? 菊花菜啥时候播种 丰城东煌学校学费多少 丰城立德学校在哪里 宜春立德高中在哪里 宜春立德高级中学怎么样 凯字几笔 古人读书孜孜不倦的成语故事